#include<bits/stdc++.h>
#define REP(i,n) for (int i = 1; i <= n; i++)
#define mod 1000000007
#define pb push_back
#define ff first
#define ss second
#define ii pair<int,int>
#define vi vector<int>
#define vii vector<ii>
#define lli long long int
#define INF 1000000000
#define endl '\n'
const double PI = 3.141592653589793238460;
typedef std::complex<double> Complex;
typedef std::valarray<Complex> CArray;
using namespace std;
int ar[100010] , br[100010];
vi tmpA , tmpB;
bool init(int n , string A , string B)
{
REP(i , n+2) ar[i] = br[i] = 0;
int i = n+2;
while(A.size() > 0)
ar[i] = A.back() - '0' , A.pop_back() , i--;
bool hasB = 0;
i = n+2;
while(B.size() > 0)
br[i] = B.back() - '0' , hasB |= br[i] , B.pop_back() , i--;
return hasB;
}
bool modifyABOnce(int n)
{
tmpA.resize(n+3) , tmpB.resize(n+3);
REP(i , n+2) tmpA[i] = 0 , tmpB[i] = 0;
REP(i , n+2) tmpA[i] = ar[i] ^ br[i];
bool hasB = 0;
for(int i=2;i<=n+1;i++)
tmpB[i] = ar[i+1] & br[i+1] , hasB |= tmpB[i];
REP(i , n+2) ar[i] = tmpA[i];
REP(i , n+2) br[i] = tmpB[i];
return hasB;
}
bool modifyABAgain(int n)
{
tmpA.resize(n+3) , tmpB.resize(n+3);
REP(i , n+2) tmpA[i] = 0 , tmpB[i] = 0;
REP(i , n+2) tmpA[i] = ar[i] ^ br[i];
bool hasB = 0;
for(int i=1;i<=n+1;i++)
tmpB[i] = ar[i+1] & br[i+1] , hasB |= tmpB[i];
REP(i , n+2) ar[i] = tmpA[i];
REP(i , n+2) br[i] = tmpB[i];
return hasB;
}
int getMeAns(int n)
{
int ans = 0;
int cnt = 0;
for(int i=1;i<=n+2;i++)
{
if(ar[i] == 0) cnt = 0;
else cnt++;
if(br[i] == 1)
{
ans = max(ans , cnt);
if(cnt == 0) cnt = 1;
else cnt = 0;
}
}
return ans + 1;
}
int main()
{
int t , n , cnt;
string A , B;
bool hasB;
cin>>t;
while(t--)
{
cin>>A>>B , n = max(A.size() , B.size()) , cnt = 0;
hasB = init(n , A , B);
if(!hasB)
{
cout<<cnt<<endl;
continue;
}
cnt++;
hasB = modifyABOnce(n);
if(!hasB)
{
cout<<cnt<<endl;
continue;
}
cnt++;
hasB = modifyABAgain(n);
if(!hasB)
{
cout<<cnt<<endl;
continue;
}
cout<<cnt+getMeAns(n)<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBSRVAoaSxuKSBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHZpaSB2ZWN0b3I8aWk+CiNkZWZpbmUgbGxpIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBJTkYgMTAwMDAwMDAwMAojZGVmaW5lIGVuZGwgJ1xuJwpjb25zdCBkb3VibGUgUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MDsKdHlwZWRlZiBzdGQ6OmNvbXBsZXg8ZG91YmxlPiBDb21wbGV4Owp0eXBlZGVmIHN0ZDo6dmFsYXJyYXk8Q29tcGxleD4gQ0FycmF5OwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBhclsxMDAwMTBdICwgYnJbMTAwMDEwXTsKdmkgdG1wQSAsIHRtcEI7Cgpib29sIGluaXQoaW50IG4gLCBzdHJpbmcgQSAsIHN0cmluZyBCKQp7CglSRVAoaSAsIG4rMikgYXJbaV0gPSBicltpXSA9IDA7CgkKCWludCBpID0gbisyOwoJd2hpbGUoQS5zaXplKCkgPiAwKQoJYXJbaV0gPSBBLmJhY2soKSAtICcwJyAsIEEucG9wX2JhY2soKSAsIGktLTsKCQoJYm9vbCBoYXNCID0gMDsKCWkgPSBuKzI7Cgl3aGlsZShCLnNpemUoKSA+IDApCglicltpXSA9IEIuYmFjaygpIC0gJzAnICwgaGFzQiB8PSBicltpXSAsIEIucG9wX2JhY2soKSAsIGktLTsKCQoJcmV0dXJuIGhhc0I7Cn0KCmJvb2wgbW9kaWZ5QUJPbmNlKGludCBuKQp7Cgl0bXBBLnJlc2l6ZShuKzMpICwgdG1wQi5yZXNpemUobiszKTsKCVJFUChpICwgbisyKSB0bXBBW2ldID0gMCAsIHRtcEJbaV0gPSAwOwoJCglSRVAoaSAsIG4rMikgdG1wQVtpXSA9IGFyW2ldIF4gYnJbaV07CgkKCWJvb2wgaGFzQiA9IDA7Cglmb3IoaW50IGk9MjtpPD1uKzE7aSsrKQoJdG1wQltpXSA9IGFyW2krMV0gJiBicltpKzFdICwgaGFzQiB8PSB0bXBCW2ldOwoJCglSRVAoaSAsIG4rMikgYXJbaV0gPSB0bXBBW2ldOwoJUkVQKGkgLCBuKzIpIGJyW2ldID0gdG1wQltpXTsKCQoJcmV0dXJuIGhhc0I7Cn0KCmJvb2wgbW9kaWZ5QUJBZ2FpbihpbnQgbikKewoJdG1wQS5yZXNpemUobiszKSAsIHRtcEIucmVzaXplKG4rMyk7CglSRVAoaSAsIG4rMikgdG1wQVtpXSA9IDAgLCB0bXBCW2ldID0gMDsKCQoJUkVQKGkgLCBuKzIpIHRtcEFbaV0gPSBhcltpXSBeIGJyW2ldOwoJCglib29sIGhhc0IgPSAwOwoJZm9yKGludCBpPTE7aTw9bisxO2krKykKCXRtcEJbaV0gPSBhcltpKzFdICYgYnJbaSsxXSAsIGhhc0IgfD0gdG1wQltpXTsKCQoJUkVQKGkgLCBuKzIpIGFyW2ldID0gdG1wQVtpXTsKCVJFUChpICwgbisyKSBicltpXSA9IHRtcEJbaV07CgkKCXJldHVybiBoYXNCOwp9CgoKaW50IGdldE1lQW5zKGludCBuKQp7CglpbnQgYW5zID0gMDsKCWludCBjbnQgPSAwOwoJCglmb3IoaW50IGk9MTtpPD1uKzI7aSsrKQoJewoJCWlmKGFyW2ldID09IDApIGNudCA9IDA7CgkJZWxzZQkJICAgY250Kys7CgkJCgkJaWYoYnJbaV0gPT0gMSkKCQl7CgkJCWFucyA9IG1heChhbnMgLCBjbnQpOwoJCQlpZihjbnQgPT0gMCkgY250ID0gMTsKCQkJZWxzZQkJIGNudCA9IDA7CgkJfQoJfQoJCglyZXR1cm4gYW5zICsgMTsKfQoKaW50IG1haW4oKQp7CglpbnQgdCAsIG4gLCBjbnQ7CglzdHJpbmcgQSAsIEI7Cglib29sIGhhc0I7CgkKCWNpbj4+dDsKCXdoaWxlKHQtLSkKCXsKCQljaW4+PkE+PkIgLCBuID0gbWF4KEEuc2l6ZSgpICwgQi5zaXplKCkpICwgY250ID0gMDsKCQloYXNCID0gaW5pdChuICwgQSAsIEIpOwoJCQoJCWlmKCFoYXNCKQoJCXsKCQkJY291dDw8Y250PDxlbmRsOwoJCQljb250aW51ZTsKCQl9CgkJCgkJY250Kys7CgkJaGFzQiA9IG1vZGlmeUFCT25jZShuKTsKCQkKCQkKCQlpZighaGFzQikKCQl7CgkJCWNvdXQ8PGNudDw8ZW5kbDsKCQkJY29udGludWU7CgkJfQoJCQoJCWNudCsrOwoJCWhhc0IgPSBtb2RpZnlBQkFnYWluKG4pOwoJCQoJCWlmKCFoYXNCKQoJCXsKCQkJY291dDw8Y250PDxlbmRsOwoJCQljb250aW51ZTsKCQl9CgkJCgkJY291dDw8Y250K2dldE1lQW5zKG4pPDxlbmRsOwoJfQp9Cg==