#include<bits/stdc++.h>
#define endl '\n'
#define INF 0x3f3f3f3f
using namespace std;
const int N=55;
string pre,mid,fin;
int t,now,tot;
struct tree
{
char dat;
int l,r;
}tr[N];
int rebuild(int l,int r)
{
if(l>r)return 0;
int m;
for(int i=l;i<=r;i++)
{
if(pre[now]==mid[i])
{
m=i;
break;
}
}
tr[++tot].dat=pre[now++];
int root=tot;
tr[root].l=rebuild(l,m-1);
tr[root].r=rebuild(m+1,r);
return root;
}
int fibuild(int l,int r)
{
if(l>r)return 0;
int m;
for(int i=l;i<=r;i++)
{
if(fin[now]==mid[i])
{
m=i;
break;
}
}
tr[++tot].dat=fin[now--];
int root=tot;
tr[root].r=fibuild(m+1,r);
tr[root].l=fibuild(l,m-1);
return root;
}
void floorprint(int root)
{
queue<int> q;
if(root)
q.push(root);
while(q.size())
{
int u=q.front();
q.pop();
cout<<tr[u].dat;
if(tr[u].l)q.push(tr[u].l);
if(tr[u].r)q.push(tr[u].r);
}
}
void finalprint(int root)
{
if(root)
{
finalprint(tr[root].l);
finalprint(tr[root].r);
cout<<tr[root].dat;
}
}
int gethigh(int root)
{
if(!root)return 0;
return max(gethigh(tr[root].l),gethigh(tr[root].r))+1;
}
int main()
{
cin>>t;
while(t--)
{
cin>>mid>>fin;
tot=0;
now=fin.size()-1;
int root=fibuild(0,now);
cout<<gethigh(root)<<endl;
}
return 0;
}