#include <cmath>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <list>
#include <time.h>
#include <math.h>
#include <random>
#include <deque>
#include <queue>
#include <cassert>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <bitset>
#include <sstream>
#include <chrono>
#include <cstring>
using namespace std;
typedef unsigned long long ll;
#ifdef iq
mt19937 rnd(228);
#else
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
#endif
const int N = 1e5;
bitset <N> a, b;
int main() {
#ifdef iq
freopen("a.in", "r", stdin);
#endif
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--) {
string l, r;
cin >> l >> r;
reverse(l.begin(), l.end());
reverse(r.begin(), r.end());
a.reset(), b.reset();
int mx = max(l.size(), r.size()) + 1;
vector <ll> a(mx / 64 + 1);
vector <ll> b(mx / 64 + 1);
ll one = 1ll;
for (int i = 0; i < (int) l.size(); i++) {
if (l[i] == '1') {
a[i / 64] += (one << (i % 64));
}
}
for (int i = 0; i< (int) r.size(); i++) {
if (r[i] == '1') {
b[i / 64] += (one << (i % 64));
}
}
int its = 0;
while (true) {
bool bad = false;
for (int i = 0; i < b.size(); i++) if (b[i]) bad = true;
if (!bad) break;
auto u = a, v = a;
for (int i = 0; i < b.size(); i++) {
u[i] ^= b[i], v[i] &= b[i];
}
int was = 0;
for (int i = 0; i < b.size(); i++) {
int mem = ((v[i] >> 63) & 1);
ll go = v[i] & ((one << 63) - 1);
go <<= 1;
if (was) go ^= 1;
was = mem;
v[i] = go;
}
a = u, b = v;
its++;
}
/*
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int init = a.size();
int mx = max((int) a.size(), (int) b.size());
while (a.size() < mx) a += '0';
while (b.size() < mx) b += '0';
int um = 0;
int tot = 0;
for (int i = 0; i < (int) a.size(); i++) {
int cur = (a[i] - '0' + b[i] - '0' + um);
if (i <= init && (b[i] - '0' + um) > 0) tot++;
um = cur / 2;
}
cout << tot << '\n';
*/
cout << its << '\n';
}
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxsaXN0PgojaW5jbHVkZSA8dGltZS5oPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxiaXRzZXQ+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8Y2hyb25vPgojaW5jbHVkZSA8Y3N0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBsbDsKCiNpZmRlZiBpcQogIG10MTk5Mzcgcm5kKDIyOCk7CiNlbHNlCiAgbXQxOTkzNyBybmQoY2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKI2VuZGlmCgpjb25zdCBpbnQgTiA9IDFlNTsKCmJpdHNldCA8Tj4gYSwgYjsKCmludCBtYWluKCkgewojaWZkZWYgaXEKICBmcmVvcGVuKCJhLmluIiwgInIiLCBzdGRpbik7CiNlbmRpZgogIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogIGNpbi50aWUoMCk7CiAgaW50IHQ7CiAgY2luID4+IHQ7CiAgd2hpbGUgKHQtLSkgewogICAgc3RyaW5nIGwsIHI7CiAgICBjaW4gPj4gbCA+PiByOwogICAgcmV2ZXJzZShsLmJlZ2luKCksIGwuZW5kKCkpOwogICAgcmV2ZXJzZShyLmJlZ2luKCksIHIuZW5kKCkpOwogICAgYS5yZXNldCgpLCBiLnJlc2V0KCk7CiAgICBpbnQgbXggPSBtYXgobC5zaXplKCksIHIuc2l6ZSgpKSArIDE7CiAgICB2ZWN0b3IgPGxsPiBhKG14IC8gNjQgKyAxKTsKICAgIHZlY3RvciA8bGw+IGIobXggLyA2NCArIDEpOwogICAgbGwgb25lID0gMWxsOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KSBsLnNpemUoKTsgaSsrKSB7CiAgICAgIGlmIChsW2ldID09ICcxJykgewogICAgICAgIGFbaSAvIDY0XSArPSAob25lIDw8IChpICUgNjQpKTsKICAgICAgfQogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGk8ICAoaW50KSByLnNpemUoKTsgaSsrKSB7CiAgICAgIGlmIChyW2ldID09ICcxJykgewogICAgICAgIGJbaSAvIDY0XSArPSAob25lIDw8IChpICUgNjQpKTsKICAgICAgfQogICAgfQogICAgaW50IGl0cyA9IDA7CiAgICB3aGlsZSAodHJ1ZSkgewogICAgICBib29sIGJhZCA9IGZhbHNlOwogICAgICBmb3IgKGludCBpID0gMDsgaSA8IGIuc2l6ZSgpOyBpKyspIGlmIChiW2ldKSBiYWQgPSB0cnVlOwogICAgICBpZiAoIWJhZCkgYnJlYWs7CiAgICAgIGF1dG8gdSA9IGEsIHYgPSBhOwogICAgICBmb3IgKGludCBpID0gMDsgaSA8IGIuc2l6ZSgpOyBpKyspIHsKICAgICAgICB1W2ldIF49IGJbaV0sIHZbaV0gJj0gYltpXTsKICAgICAgfQogICAgICBpbnQgd2FzID0gMDsKICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBiLnNpemUoKTsgaSsrKSB7CiAgICAgICAgaW50IG1lbSA9ICgodltpXSA+PiA2MykgJiAxKTsKICAgICAgICBsbCBnbyA9IHZbaV0gJiAoKG9uZSA8PCA2MykgLSAxKTsKICAgICAgICBnbyA8PD0gMTsKICAgICAgICBpZiAod2FzKSBnbyBePSAxOwogICAgICAgIHdhcyA9IG1lbTsKICAgICAgICB2W2ldID0gZ287CiAgICAgIH0KICAgICAgYSA9IHUsIGIgPSB2OwogICAgICBpdHMrKzsKICAgIH0KICAgIC8qCiAgICByZXZlcnNlKGEuYmVnaW4oKSwgYS5lbmQoKSk7CiAgICByZXZlcnNlKGIuYmVnaW4oKSwgYi5lbmQoKSk7CiAgICBpbnQgaW5pdCA9IGEuc2l6ZSgpOwogICAgaW50IG14ID0gbWF4KChpbnQpIGEuc2l6ZSgpLCAoaW50KSBiLnNpemUoKSk7CiAgICB3aGlsZSAoYS5zaXplKCkgPCBteCkgYSArPSAnMCc7CiAgICB3aGlsZSAoYi5zaXplKCkgPCBteCkgYiArPSAnMCc7CiAgICBpbnQgdW0gPSAwOwogICAgaW50IHRvdCA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpIGEuc2l6ZSgpOyBpKyspIHsKICAgICAgaW50IGN1ciA9IChhW2ldIC0gJzAnICsgYltpXSAtICcwJyArIHVtKTsKICAgICAgaWYgKGkgPD0gaW5pdCAmJiAoYltpXSAtICcwJyArIHVtKSA+IDApIHRvdCsrOwogICAgICB1bSA9IGN1ciAvIDI7CiAgICB9CiAgICBjb3V0IDw8IHRvdCA8PCAnXG4nOwogICAgKi8KICAgIGNvdXQgPDwgaXRzIDw8ICdcbic7CiAgfQp9