题意

思路
#include <bits/stdc++.h>
#define LL long long
#define ULL unsigned long long
#define UI unsigned int
#define mem(i, j) memset(i, j, sizeof(i))
#define rep(i, j, k) for(int i = j; i <= k; i++)
#define dep(i, j, k) for(int i = k; i >= j; i--)
#define pb push_back
#define make make_pair
#define INF 0x3f3f3f3f
#define inf LLONG_MAX
#define PI acos(-1)
#define fir first
#define sec second
#define lb(x) ((x) & (-(x)))
#define dbg(x) cout<<#x<<" = "<<x<<endl;
using namespace std;
const int N = 1e6 + 5;
char a[101], b[101];
int dp[101][101][101][101];
void solve() {
scanf("%s", a + 1);
scanf("%s", b + 1);
int lena = strlen(a + 1);
int lenb = strlen(b + 1);
int ans = 0;
for(int la = 0; la <= lena; la++) { /// a区间长度
for(int lb = 0; lb <= lenb; lb++) { /// b区间长度
for(int i = 1; i + la - 1 <= lena; i++) {
for(int k = 1; k + lb - 1 <= lenb; k++) {
int j = i + la - 1, l = k + lb - 1;
if(la + lb <= 1) dp[i][j][k][l] = 1;
else {
dp[i][j][k][l] = 0;
if(la > 1) dp[i][j][k][l] |= (dp[i + 1][j - 1][k][l] && (a[i] == a[j]));
if(la && lb) dp[i][j][k][l] |= (dp[i + 1][j][k][l - 1] && (a[i] == b[l]));
if(la && lb) dp[i][j][k][l] |= (dp[i][j - 1][k + 1][l] && (a[j] == b[k]));
if(lb > 1) dp[i][j][k][l] |= (dp[i][j][k + 1][l - 1] && (b[k] == b[l]));
}
if(dp[i][j][k][l]) ans = max(ans, la + lb);
}
}
}
}
printf("%d
", ans);
}
int main() {
int _; scanf("%d", &_);
while(_--) solve();
// solve();
return 0;
}