S를 T로

시간 제한1초메모리 제한128 MB

요약
0,1,?로 이루어진 문자열 S를 0,1로 이루어진 T로 바꾸는 데 필요한 변경과 교환의 최소 연산 수를 구하거나 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
그리디, 문자열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

길이가 같은 두 문자열 SS와 TT가 주어집니다. SS는 0, 1, ?로 이루어져 있고, TT는 0, 1로 이루어져 있습니다. SS를 TT로 바꾸는 데 필요한 연산 횟수의 최솟값을 구하세요.

사용할 수 있는 연산은 다음과 같습니다.

  1. SS의 0을 1로 바꾸기;
  2. SS의 ?를 0이나 1로 바꾸기;
  3. SS의 두 위치에 있는 문자의 자리를 서로 바꾸기.

예를 들어 SS가 01??00이고 TT가 001010이면 세 번의 연산으로 바꿀 수 있습니다.

  • 시작: 01??00;
  • 3번째 문자(?)를 1로 바꾼다: 011?00;
  • 4번째 문자(?)를 0으로 바꾼다: 011000;
  • 2번째와 5번째 문자의 자리를 바꾼다: 001010.

입력

첫째 줄에 테스트 케이스의 개수 CC (C≤200C \le 200)가 주어집니다. 각 테스트 케이스는 두 줄로 이루어집니다. 첫째 줄에는 0, 1, ?로 이루어진 SS가, 둘째 줄에는 0, 1로 이루어진 TT가 주어집니다. 두 문자열의 길이는 같고 100100을 넘지 않으며, 빈 문자열이 아닙니다.

출력

각 테스트 케이스마다 Case x: r 형식으로 한 줄에 출력합니다. 여기서 x는 테스트 케이스 번호(1부터 시작)이고 r은 SS를 TT로 바꾸는 데 필요한 연산 횟수의 최솟값입니다. SS를 TT로 바꿀 수 없다면 r로 -1을 출력합니다.

예제1

  1. 예제 1

    입력
    3
    01??00
    001010
    01
    10
    110001
    000000
    
    예상 출력
    Case 1: 3
    Case 2: 1
    Case 3: -1