일단 "anta"로 시작해서 "tica"로 끝나는 단어만 있어서, "antic" 5글자는 최소 알아야한다.
26개 철자 모두 알면 주어진 n개의 단어 모두 읽을 수 있다.
그 사이에 있는 단어들은 읽을 수 있는지 확인해야한다.
학생이 배우는 글자의 경우의 수를 모두 탐색하면서, 최대가 되는 경우를 count하자.
비트마스킹을 진행한다.

ord('a')의 결과 → 97 따라서, ord('char')-97는 a부터 z까지 0부터 25로 mapping할 수 있게 한다.
learned_alphabet=[False]*26로 학생들이 배운 알파벳 배열을 선언한 뒤, 경우의 수를 백트래킹으로 탐색하자.
for c in ('a','n','t','i','c'): learned_alphabet[ord(c)-ord('a')]=True 미리 'antic'단어는 True처리를 해둔다.
단어를 배울 때마다, depth를 1 증가하고, depth가 k(배울 수 있는 알파벳 한계)와 같아지면, 현재 answer와 비교해 최대값을 update해준다.
if not learned_alphabet[i]를 통해서, 배우지 않은 철자만 배울 수 있게 시간을 단축시킨다.
n,k=map(int,input().split())
word_list=[list(input())for _ in range(n)]
answer=0
learned_alphabet=[False]*26
def checker(word_list):
    cnt=0
    for word in word_list:
        toggle=True
        for char in word:
            if not learned_alphabet[ord(char)-97]:
                toggle=False
        if toggle:
            cnt+=1
    return cnt
def dfs(start,depth):
    global answer
    if depth==k:
        answer=max(answer,checker(word_list))
        return
    
    for i in range(start,26):
        if not learned_alphabet[i]:
            learned_alphabet[i]=True
            dfs(i,depth+1)
            learned_alphabet[i]=False
if k<5:
    print(0)
elif k==26:
    print(n)
else:
    for c in ('a','n','t','i','c'):
        learned_alphabet[ord(c)-ord('a')]=True
    dfs(0,5)
    print(answer)