길이가 모두 m으로 같은 n개의 이진 문자열 s1,…,sn이 주어진다. 각 문자열 si에는 비트 bi가 하나씩 함께 주어진다. 문자열의 인덱스는 0부터 시작한다.
열 인덱스의 부분집합 S⊆{0,1,…,m−1}에 대해, 이 집합이 문자열 si에 대해 만들어 내는 값을 "S에 속한 위치들에서의 si 비트들의 XOR"로 정의한다. (비트들의 XOR은 값이 1인 비트의 개수가 홀수이면 1, 아니면 0이다. 공집합의 XOR은 0이다.)
음이 아닌 정수 k가 주어진다. 모든 i=1,…,n에 대해 si에 대해 만들어지는 값이 bi와 같도록, 크기가 k 이하인 부분집합 S를 고르고자 한다.
예를 들어 s1=1010이고 S={0,3}이면, s1에 대한 값은 인덱스 0의 비트 1과 인덱스 3의 비트 0의 XOR인 1이다.
크기가 k 이하인 모든 유효한 부분집합 S 중에서, 가능한 최소 크기를 출력한다. 그러한 부분집합이 존재하지 않으면 대신 그 사실을 알린다.
첫째 줄에 두 정수 n과 k가 공백으로 구분되어 주어진다 (1≤n≤64, 0≤k≤10).
이어지는 n개의 줄 각각에는 문자열 si, 공백 하나, 그리고 비트 bi가 주어진다. 모든 문자열의 길이는 m으로 같으며 (1≤m≤50), k≤m이다.
∣S∣≤k이면서 모든 i에 대해 S에 속한 인덱스들에서의 si 비트들의 XOR가 bi와 같은 부분집합 S⊆{0,1,…,m−1}의 최소 크기를 정수 하나로 출력한다. 그러한 부분집합이 존재하지 않으면 −1을 출력한다.