패리티
시간 제한10초메모리 제한512 MB
이진 문자열 n개와 각각의 목표 비트가 주어질 때, 각 문자열에서 선택한 열들의 XOR이 목표 비트와 같아지는 크기 k 이하의 최소 열 부분집합을 구한다.
문제
길이가 모두 으로 같은 개의 이진 문자열 이 주어진다. 각 문자열 에는 비트 가 하나씩 함께 주어진다. 문자열의 인덱스는 부터 시작한다.
열 인덱스의 부분집합 에 대해, 이 집합이 문자열 에 대해 만들어 내는 값을 "에 속한 위치들에서의 비트들의 XOR"로 정의한다. (비트들의 XOR은 값이 인 비트의 개수가 홀수이면 , 아니면 이다. 공집합의 XOR은 이다.)
음이 아닌 정수 가 주어진다. 모든 에 대해 에 대해 만들어지는 값이 와 같도록, 크기가 이하인 부분집합 를 고르고자 한다.
예를 들어 이고 이면, 에 대한 값은 인덱스 의 비트 과 인덱스 의 비트 의 XOR인 이다.
크기가 이하인 모든 유효한 부분집합 중에서, 가능한 최소 크기를 출력한다. 그러한 부분집합이 존재하지 않으면 대신 그 사실을 알린다.
입력
첫째 줄에 두 정수 과 가 공백으로 구분되어 주어진다 (, ).
이어지는 개의 줄 각각에는 문자열 , 공백 하나, 그리고 비트 가 주어진다. 모든 문자열의 길이는 으로 같으며 (), 이다.
출력
이면서 모든 에 대해 에 속한 인덱스들에서의 비트들의 XOR가 와 같은 부분집합 의 최소 크기를 정수 하나로 출력한다. 그러한 부분집합이 존재하지 않으면 을 출력한다.