패리티

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

문제

길이가 모두 mm으로 같은 nn개의 이진 문자열 s1,,sns_1, \dots, s_n이 주어진다. 각 문자열 sis_i에는 비트 bib_i가 하나씩 함께 주어진다. 문자열의 인덱스는 00부터 시작한다.

열 인덱스의 부분집합 S{0,1,,m1}S \subseteq \{0, 1, \dots, m-1\}에 대해, 이 집합이 문자열 sis_i에 대해 만들어 내는 값을 "SS에 속한 위치들에서의 sis_i 비트들의 XOR"로 정의한다. (비트들의 XOR은 값이 11인 비트의 개수가 홀수이면 11, 아니면 00이다. 공집합의 XOR은 00이다.)

음이 아닌 정수 kk가 주어진다. 모든 i=1,,ni = 1, \dots, n에 대해 sis_i에 대해 만들어지는 값이 bib_i와 같도록, 크기가 kk 이하인 부분집합 SS를 고르고자 한다.

예를 들어 s1=1010s_1 = 1010이고 S={0,3}S = \{0, 3\}이면, s1s_1에 대한 값은 인덱스 00의 비트 11과 인덱스 33의 비트 00의 XOR인 11이다.

크기가 kk 이하인 모든 유효한 부분집합 SS 중에서, 가능한 최소 크기를 출력한다. 그러한 부분집합이 존재하지 않으면 대신 그 사실을 알린다.

입력

첫째 줄에 두 정수 nnkk가 공백으로 구분되어 주어진다 (1n641 \le n \le 64, 0k100 \le k \le 10).

이어지는 nn개의 줄 각각에는 문자열 sis_i, 공백 하나, 그리고 비트 bib_i가 주어진다. 모든 문자열의 길이는 mm으로 같으며 (1m501 \le m \le 50), kmk \le m이다.

출력

Sk|S| \le k이면서 모든 ii에 대해 SS에 속한 인덱스들에서의 sis_i 비트들의 XOR가 bib_i와 같은 부분집합 S{0,1,,m1}S \subseteq \{0, 1, \dots, m-1\}의 최소 크기를 정수 하나로 출력한다. 그러한 부분집합이 존재하지 않으면 1-1을 출력한다.