1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 struct node
5 {
6 char a;
7 struct node*left,*right;
8 };
9 int max(int a,int b)
10 {
11 if(a>b)return a;
12 else return b;
13 }
14 struct node *creat(int n,char s1[],char s2[] )
15 {
16 if(n==0)return NULL;
17 struct node *root;
18 root=(struct node*)malloc(sizeof(struct node));
19 int i;
20 for(i=0;i<n;i++)
21 {
22 if(s1[i]==s2[n-1])break;
23 }
24 root->left = creat(i,s1,s2);
25 root->right = creat(n-i-1,s1+i+1,s2+i);
26 return root;
27 };
28 int deep(struct node*root)
29 {
30 int h;
31 int d1,d2;
32 if(root)
33 {
34 d1=deep(root->left);
35 d2=deep(root->right);
36 h=max(d1+1,d2+1);
37 }
38 return h;
39 }
40 int main()
41 {
42 struct node*root;
43 char s2[1000],s1[1000];
44 int n,len;
45 scanf("%d",&n);
46 while(n--)
47 {
48 scanf("%s%s",s1,s2);
49 len=strlen(s1);
50 root=(struct node*)malloc(sizeof(struct node));
51 root=creat(len,s1,s2);
52 printf("%d\n",deep(root));
53 }
54 return 0;
55 }