#include<bits/stdc++.h>
#define mod 1000000007
#define ll long long
#define p(x) pair<x,x>
#define v(x) vector<x>
#define Tree node*
#define sz(a) a.size()
#define x first
#define y second
#define pb(a) push_back(a)
#define pf(a) push_front(a)
#define FOR(i, l, r) for (int i = l; i < r; i++)
#define FORX(i, l, r, x) for (int i = l; i < r; i += x)
#define FORD(i, l, r) for (int i = l; i >= r; i--)
#define correct(x, y, n, m) 0 <= (x)&&(x) < (n)& & 0 <= (y)&&(y) < (m)
#define cin(M, n) FOR(i, 0, n)cin >> M[i]
#define cout(M, n) FOR(i, 0, n)cout << M[i] << " "
#define rs(M, x) memset(M, x, sizeof(M))
#define reset() FOR(i, 0, 1001)A[i].clear(), check[i] = false
#define faster() cin.tie(0); ios_base::sync_with_stdio(false); cout.tie(0);
#define run() int t; cin >> t; while (t--)
#define pq(x) priority_queue<x>
#define neg_pq(x) priority_queue<x, vector<x>, greater<x>>
#define all(M) M.begin(), M.end()
using namespace std;
//_______________________NGUYỄN_NGỌC_TOÀN_______________________//
int main() {
faster();
run() {
string a, b; cin >> a >> b;
int dp[1001][1001];
FOR(i, 0, sz(a) + 1) {
FOR(j, 0, sz(b) + 1) {
if (i == 0 || j == 0)dp[i][j] = 0;
else {
if (a[i - 1] == b[j - 1])dp[i][j] = dp[i - 1][j - 1] + 1;
else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
cout << dp[sz(a)][sz(b)] << endl;
}
}
//__________________________B20DCPT173__________________________//
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBtb2QgICAgICAgICAgICAgICAgIDEwMDAwMDAwMDcKI2RlZmluZSBsbCAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZwojZGVmaW5lCXAoeCkgICAgICAgICAgICAgICAgcGFpcjx4LHg+CiNkZWZpbmUgdih4KSAgICAgICAgICAgICAgICB2ZWN0b3I8eD4KI2RlZmluZSBUcmVlICAgICAgICAgICAgICAgIG5vZGUqCiNkZWZpbmUgc3ooYSkgICAgICAgICAgICAgICBhLnNpemUoKQojZGVmaW5lIHggICAgICAgICAgICAgICAgICAgZmlyc3QKI2RlZmluZSB5ICAgICAgICAgICAgICAgICAgIHNlY29uZAojZGVmaW5lIHBiKGEpICAgICAgICAgICAgICAgcHVzaF9iYWNrKGEpCiNkZWZpbmUgcGYoYSkgICAgICAgICAgICAgICBwdXNoX2Zyb250KGEpCiNkZWZpbmUgRk9SKGksIGwsIHIpICAgICAgICBmb3IgKGludCBpID0gbDsgaSA8IHI7IGkrKykKI2RlZmluZSBGT1JYKGksIGwsIHIsIHgpICAgIGZvciAoaW50IGkgPSBsOyBpIDwgcjsgaSArPSB4KQojZGVmaW5lIEZPUkQoaSwgbCwgcikgICAgICAgZm9yIChpbnQgaSA9IGw7IGkgPj0gcjsgaS0tKQojZGVmaW5lIGNvcnJlY3QoeCwgeSwgbiwgbSkgMCA8PSAoeCkmJih4KSA8IChuKSYgJiAwIDw9ICh5KSYmKHkpIDwgKG0pCiNkZWZpbmUgY2luKE0sIG4pICAgICAgICAgICBGT1IoaSwgMCwgbiljaW4gPj4gTVtpXQojZGVmaW5lIGNvdXQoTSwgbikgICAgICAgICAgRk9SKGksIDAsIG4pY291dCA8PCBNW2ldIDw8ICIgIgojZGVmaW5lIHJzKE0sIHgpICAgICAgICAgICAgbWVtc2V0KE0sIHgsIHNpemVvZihNKSkKI2RlZmluZSByZXNldCgpICAgICAgICAgICAgIEZPUihpLCAwLCAxMDAxKUFbaV0uY2xlYXIoKSwgY2hlY2tbaV0gPSBmYWxzZQojZGVmaW5lIGZhc3RlcigpICAgICAgICAgICAgY2luLnRpZSgwKTsgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNvdXQudGllKDApOwojZGVmaW5lIHJ1bigpICAgICAgICAgICAgICAgaW50IHQ7IGNpbiA+PiB0OyB3aGlsZSAodC0tKQojZGVmaW5lIHBxKHgpICAgICAgICAgICAgICAgcHJpb3JpdHlfcXVldWU8eD4KI2RlZmluZSBuZWdfcHEoeCkgICAgICAgICAgIHByaW9yaXR5X3F1ZXVlPHgsIHZlY3Rvcjx4PiwgZ3JlYXRlcjx4Pj4KI2RlZmluZSBhbGwoTSkgICAgICAgICAgICAgIE0uYmVnaW4oKSwgTS5lbmQoKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy9fX19fX19fX19fX19fX19fX19fX19fX05HVVnhu4ROX05H4buMQ19UT8OATl9fX19fX19fX19fX19fX19fX19fX19fLy8KCmludCBtYWluKCkgewoJZmFzdGVyKCk7CglydW4oKSB7CgkJc3RyaW5nIGEsIGI7IGNpbiA+PiBhID4+IGI7CgkJaW50IGRwWzEwMDFdWzEwMDFdOwoJCUZPUihpLCAwLCBzeihhKSArIDEpIHsKCQkJRk9SKGosIDAsIHN6KGIpICsgMSkgewoJCQkJaWYgKGkgPT0gMCB8fCBqID09IDApZHBbaV1bal0gPSAwOwoJCQkJZWxzZSB7CgkJCQkJaWYgKGFbaSAtIDFdID09IGJbaiAtIDFdKWRwW2ldW2pdID0gZHBbaSAtIDFdW2ogLSAxXSArIDE7CgkJCQkJZWxzZSBkcFtpXVtqXSA9IG1heChkcFtpIC0gMV1bal0sIGRwW2ldW2ogLSAxXSk7CgkJCQl9CgkJCX0KCQl9CgkJY291dCA8PCBkcFtzeihhKV1bc3ooYildIDw8IGVuZGw7Cgl9Cn0KCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19CMjBEQ1BUMTczX19fX19fX19fX19fX19fX19fX19fX19fX18vLw==