#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn=
100+
10;
int t;
string s1,s2;
int main()
{
scanf("%d",&
t);
for(
int Case=
1; Case<=t; Case++
)
{
cin >> s1 >>
s2;
int snum=
0,tnum=
0,qnum=
0,ans=
0;
for(
int i=
0; i<s1.length(); i++
)
{
if(s2[i]==
'0') tnum++
;
if(s1[i]==
'0') snum++
;
if(s1[i]==
'?')
//'?'变化总需要一步
{
qnum++
;
ans++
;
}
if(s2[i]==
'0'&&s1[i]==
'?')
//'?'变成0,变化的步数在上面已经计算过了,所以不用再计算
{
s1[i]=
'0';
qnum--
;
snum++
;
}
}
printf("Case %d: ",Case);
if(qnum+snum-tnum<
0)
//如果?和0的数量少于需要达到的目标数,则永远不会成立
{
printf("-1\n");
continue;
}
int sub=tnum-
snum;
if(sub>
0) ans+=sub;
//起始串和目标串之间的差值,即?变成0,然后移动
for(
int i=
0; i<s1.length(); i++
)
{
if(s1[i]==
'0'&&s2[i]==
'1')
//将非?变成的0变成1,因为?变成的0必然一一对应目标串相同位置的0,所以这里必然不是
ans++
;
}
printf("%d\n",ans);
}
return 0;
}
转载于:https://www.cnblogs.com/Wangwanxiang/p/8454408.html
转载请注明原文地址: https://win8.8miu.com/read-1495483.html