S를 T로
시간 제한1초메모리 제한128 MB
0,1,?로 이루어진 문자열 S를 0,1로 이루어진 T로 바꾸는 데 필요한 변경과 교환의 최소 연산 수를 구하거나 불가능하면 -1을 출력합니다.
문제
길이가 같은 두 문자열 와 가 주어집니다. 는 0, 1, ?로 이루어져 있고, 는 0, 1로 이루어져 있습니다. 를 로 바꾸는 데 필요한 연산 횟수의 최솟값을 구하세요.
사용할 수 있는 연산은 다음과 같습니다.
- 의
0을1로 바꾸기; - 의
?를0이나1로 바꾸기; - 의 두 위치에 있는 문자의 자리를 서로 바꾸기.
예를 들어 가 01??00이고 가 001010이면 세 번의 연산으로 바꿀 수 있습니다.
- 시작:
01??00; - 3번째 문자(
?)를1로 바꾼다:011?00; - 4번째 문자(
?)를0으로 바꾼다:011000; - 2번째와 5번째 문자의 자리를 바꾼다:
001010.
입력
첫째 줄에 테스트 케이스의 개수 ()가 주어집니다. 각 테스트 케이스는 두 줄로 이루어집니다. 첫째 줄에는 0, 1, ?로 이루어진 가, 둘째 줄에는 0, 1로 이루어진 가 주어집니다. 두 문자열의 길이는 같고 을 넘지 않으며, 빈 문자열이 아닙니다.
출력
각 테스트 케이스마다 Case x: r 형식으로 한 줄에 출력합니다. 여기서 x는 테스트 케이스 번호(1부터 시작)이고 r은 를 로 바꾸는 데 필요한 연산 횟수의 최솟값입니다. 를 로 바꿀 수 없다면 r로 -1을 출력합니다.