비트 맞추기

0, 1, ?로 이루어진 S를 0과 1로만 이루어진 T로 바꿀 때, 0을 1로 바꾸기, ?를 0이나 1로 바꾸기, 두 문자 교환 세 가지 연산을 최소 횟수로 사용하는 방법을 구한다. 불가능하면 -1을 출력한다.

보통5그리디문자열수학구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

길이가 같은 두 문자열 SSTT가 주어진다. SS는 문자 0, 1, ?로 이루어져 있고, TT01로만 이루어져 있다. 다음 세 가지 연산을 최소 횟수로 사용해 SSTT와 똑같이 만들어라.

  1. SS에 있는 0 하나를 1로 바꾼다.
  2. SS에 있는 ? 하나를 0 또는 1로 바꾼다.
  3. SS의 두 위치를 골라 두 문자를 맞바꾼다.

10으로 되돌리는 연산은 없다.

예를 들어 S=S = 01??00, T=T = 001010이면 세 번의 연산으로 충분하다.

  • 처음에 S=S = 01??00
  • 첫 번째 연산으로 세 번째 문자를 1로 바꾸면 S=S = 011?00
  • 두 번째 연산으로 네 번째 문자를 0으로 바꾸면 S=S = 011000
  • 세 번째 연산으로 두 번째 문자와 다섯 번째 문자를 맞바꾸면 S=S = 001010

입력

첫째 줄에 테스트 케이스의 개수 CC가 주어진다. (1C2001 \le C \le 200)

각 테스트 케이스는 두 줄이다. 첫 줄에는 0, 1, ?로 이루어진 문자열 SS가 주어지고, 둘째 줄에는 01로 이루어진 문자열 TT가 주어진다. 두 문자열의 길이는 서로 같으며 1 이상 100 이하이다.

출력

각 테스트 케이스마다 Case x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yySSTT로 만드는 최소 연산 횟수이다. 어떤 순서로도 SSTT로 만들 수 없으면 yy 자리에 -1을 출력한다.