# K<8だが8次元dpはないな # 0<=Sij<=4と非常に小さい # ということは5**8=40000の組み合わせしかない # bit dpはありえるか、ただしバイナリでなく5進数なので難しい # グラフ化 # 数字と見なして降順ソート # 大きい方から見ていって、いずれかのSijにおいて最大なら残す N, K = map(int, input().split()) S = [] for i in range(N): S.append(input()) S.sort(reverse = True) remaining = set() remaining.add(S[0]) for i in range(1, N): s = S[i] test = False for r in remaining: if test == True: break for j in range(K): if int(s[j]) > int(r[j]): test = True break if test == True: remaining.add(s) #print(remaining) ans = N - len(remaining) print(ans)