비트 맞추기
면접 대비시간 제한2초메모리 제한512 MB
0, 1, ?로 이루어진 S를 0과 1로만 이루어진 T로 바꿀 때, 0을 1로 바꾸기, ?를 0이나 1로 바꾸기, 두 문자 교환 세 가지 연산을 최소 횟수로 사용하는 방법을 구한다. 불가능하면 -1을 출력한다.
문제
길이가 같은 두 문자열 와 가 주어진다. 는 문자 0, 1, ?로 이루어져 있고, 는 0과 1로만 이루어져 있다. 다음 세 가지 연산을 최소 횟수로 사용해 를 와 똑같이 만들어라.
- 에 있는
0하나를1로 바꾼다. - 에 있는
?하나를0또는1로 바꾼다. - 의 두 위치를 골라 두 문자를 맞바꾼다.
1을 0으로 되돌리는 연산은 없다.
예를 들어 01??00, 001010이면 세 번의 연산으로 충분하다.
- 처음에
01??00 - 첫 번째 연산으로 세 번째 문자를
1로 바꾸면011?00 - 두 번째 연산으로 네 번째 문자를
0으로 바꾸면011000 - 세 번째 연산으로 두 번째 문자와 다섯 번째 문자를 맞바꾸면
001010
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다. ()
각 테스트 케이스는 두 줄이다. 첫 줄에는 0, 1, ?로 이루어진 문자열 가 주어지고, 둘째 줄에는 0과 1로 이루어진 문자열 가 주어진다. 두 문자열의 길이는 서로 같으며 1 이상 100 이하이다.
출력
각 테스트 케이스마다 Case x: y 형식으로 한 줄씩 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고, 는 를 로 만드는 최소 연산 횟수이다. 어떤 순서로도 를 로 만들 수 없으면 자리에 -1을 출력한다.