#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <map>
using namespace std;
 
int N, K;
string word[55];
int alphabet[26];
int Max;
 
int count()
{
    int wordCnt = 0;
    
    for(int i = 1; i <= N; i++)
    {
        bool flag = true;
        
        for(int j = 0; j < word[i].size(); j++)
        {
            if(alphabet[word[i][j]-'a'== 0)
            {
                flag = false;
                break;
            }
        }
        
        if(flag == true)
        {
            wordCnt++;        
        }
    }
    
    return wordCnt;
}
 
void combination(int idx, int cnt)
{
    if(cnt == K-5)
    {
        Max = max(Max, count());
        
        return;
    }
    
    for(int i = idx; i < 26; i++)
    {
        if(alphabet[i] == 1)
        {
            continue;
        }
        
        alphabet[i] = 1;
        combination(i+1, cnt+1);
        alphabet[i] = 0;
    }
}
 
int main(void)
{
//    freopen("B1062_input.txt", "r", stdin);
    
    cin >> N >> K;
    
    if(K <= 4)
    {
        for(int i = 1; i <= N; i++)
        {
            cin >> word[i];
        }
        
        cout << "0";
    }
    else
    {
        alphabet['a'-'a'= 1;
        alphabet['c'-'a'= 1;
        alphabet['i'-'a'= 1;
        alphabet['n'-'a'= 1;
        alphabet['t'-'a'= 1;
        
        for(int i = 1; i <= N; i++)
        {
            cin >> word[i];
        }    
        
        combination(00);
        
        cout << Max;
    }
    
    return 0;
}
cs

+ Recent posts