이진 수열은 몇 개인가

아직 제출이 없습니다시간 제한3초메모리 제한256 MB

문제

길이가 KK인 이진 수열을 모은 집합 BB가 있다. BB의 각 원소는 각 항이 00 또는 11인 길이 KK짜리 수열이다.

정수 수열 ZiZ_i는 다음 과정으로 만든다.

  1. BB에서 수열 X=(x1,x2,,xK)X = (x_1, x_2, \dots, x_K)를 하나 고른다.
  2. BB에서 dist(X,Y)2\mathrm{dist}(X, Y) \le 2를 만족하는 수열 Y=(y1,y2,,yK)Y = (y_1, y_2, \dots, y_K)를 하나 고른다. 여기서 dist(X,Y)\mathrm{dist}(X, Y)는 두 수열의 해밍 거리, 즉 같은 자리의 값이 서로 다른 자리의 개수다. 예를 들어 dist((1,0,1,1),(1,1,1,1))=1\mathrm{dist}((1,0,1,1), (1,1,1,1)) = 1이고 dist((1,0,1,1,1,0,1),(1,0,0,1,0,0,1))=2\mathrm{dist}((1,0,1,1,1,0,1), (1,0,0,1,0,0,1)) = 2이다. XXYY로 같은 원소를 고를 수 있다.
  3. Zi=(x1+y1,x2+y2,,xK+yK)Z_i = (x_1 + y_1, x_2 + y_2, \dots, x_K + y_K)로 둔다.

예를 들어 Zi=(1,0,1,2,2)Z_i = (1,0,1,2,2)X=(1,0,0,1,1)X = (1,0,0,1,1)Y=(0,0,1,1,1)Y = (0,0,1,1,1)로 만들 수 있다.

이 과정으로 만든 정수 수열 NNZ1,Z2,,ZNZ_1, Z_2, \dots, Z_N이 주어진다. 이 NN개를 모두 만들 수 있는 집합 BB 중에서 원소 개수가 가장 적은 것을 찾아, 그 원소 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 KKNN이 공백 하나를 사이에 두고 주어진다. (1K201 \le K \le 20, 1N241 \le N \le 24)

다음 NN개 줄에 수열 ZiZ_i가 한 줄에 하나씩 주어진다. ii번째 줄의 jj번째 문자가 Zi,jZ_{i,j}의 값이고, 문자 사이에 구분자는 없다. 각 값은 00, 11, 22 중 하나이며 한 줄에 11은 많아야 두 개 나온다. 즉 주어지는 ZiZ_i는 모두 위 과정으로 만들 수 있는 수열이다.

출력

첫째 줄에 집합 BB의 최소 원소 개수를 출력한다.