#include<iostream> #include<string> #include<cstring> using namespace std; int LCS(string a, string b){ int n=a.length(); int m=b.length(); int **C=new int* [n+1]; for (int i=0; i<n+1; i++) C[i]=new int[m+1]; for (int i=0; i<n+1; i++) C[i][0]=0; for (int j=0; j<m+1; j++) C[0][j]=0; //int C[n+1][m+1]; //for (int i=0; i<n+1; i++) // C[i][0]=0; //for (int j=0; j<m+1; j++) // C[0][j]=0; for (int i=1; i<n+1; i++){ for (int j=1; j<m+1; j++){ if (a[i-1]==b[j-1]) C[i][j]=C[i-1][j-1]+1; else if (C[i-1][j]>C[i][j-1]) C[i][j]=C[i-1][j]; else C[i][j]=C[i][j-1]; } } int len=C[n][m]; for (int i=0; i<n; i++) delete[] C[i]; delete[] C; //memset(C, 0, sizeof(C)); return len; } int main(){ int t; string a, b; cin>>t; while (t--){ cin>>a; cin>>b; int k=LCS(a, b); cout<<k<<endl; } }