Here is the Solution
<h2>int main()
{
int T;
cin >> T;
while (T--)
{
string S;
cin >> S;
string S2;
cin >> S2;
int count1 = 0;
int count0 = 0;
int countq = 0;
for (int i = 0; i < S.length(); i++)
{
if (S[i] == '0')
{
count0++;
}
else if (S[i] == '1')
{
count1++;
}
else
{
countq++;
}
}
int c1 = 0;
int c0 = 0;
for (int i = 0; i < S2.length(); i++)
{
if (S2[i] == '0')
c0++;
else
c1++;
}
if (c0 > count0 + countq)
{
cout << "-1\n";
continue;
}
int zeros = c0 - count0;
if (zeros > 0)
{
int ct = 0;
for (int i = 0; i < S.length(); i++)
{
if (S[i] == '?' and S2[i] == '0' and ct < zeros)
{
S[i] = '0';
ct++;
}
}
for (int i = 0; i < S.length(); i++)
{
if (S[i] == '?' and ct < zeros)
{
S[i] = '0';
ct++;
}
else if (S[i] == '?')
{
S[i] = '1';
}
}
}
else
{
for (int i = 0; i < S.length(); i++)
{
if (S[i] == '?')
S[i] = '1';
}
}
int zo = 0, oz = 0;
int ans = countq;
for (int i = 0; i < S.length(); i++)
{
if (S[i] == '0' and S2[i] == '1')
zo++;
else if (S[i] == '1' and S2[i] == '0')
oz++;
}
ans += oz + (zo - oz);
cout << ans << endl;
}
return 0;
}