//  #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432
//  我是看了题解写的,一开始没有看范围感觉自己写不了就直接看题解了,不过这个思路我应该也确实不会想到,不过其实我还是没有完全理解代码思路,我不太明白为什么不用考虑s[ls] == ss[lss] 的情况以及 ss[rs] == ss[lss] 的情况,等等我现在去试试会不会出错————ok,我回来了,出错了输出>=预期答案,如果有知道的话请您评论回(●'◡'●)
#include <iostream>
#include <string>
#include <bitset>
using namespace std;
bool dp[55][55][55][55];
int main() {
  ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
  int T;
  cin >> T;
  while(T--){
    int ans = 1;
    string s, ss;
    cin >> s >> ss;
    size_t size = s.size(), ssize = ss.size();
    s = ' ' + s; ss = ' ' + ss;
    for(int lens = 0; lens <= size; lens++){
      for (int lenss = 0; lenss <= ssize; lenss++){
        for (int ls = 1; ls + lens - 1 <= size; ls++){
          for (int lss = 1; lss + lenss -1 <= ssize; lss++){
            int rs = ls + lens - 1, rss = lss + lenss - 1;
            if (lens + lenss <= 1) dp[ls][rs][lss][rss] = 1;
            else {dp[ls][rs][lss][rss] = 0;
            if (s[ls] == s[rs]) dp[ls][rs][lss][rss] |= dp[ls + 1][rs - 1][lss][rss];
            if (s[ls] == ss[rss]) dp[ls][rs][lss][rss] |= dp[ls + 1][rs][lss][rss - 1];
            if (ss[lss] == s[rs]) dp[ls][rs][lss][rss] |= dp[ls][rs - 1][lss + 1][rss];
            if (ss[lss] == ss[rss]) dp[ls][rs][lss][rss] |= dp[ls][rs][lss + 1][rss - 1];
            if (dp[ls][rs][lss][rss]) ans = max(ans, lens + lenss);
            }
          }
        }
      }
    }
    cout << ans << "\n";
  }
  return 0;
}
// 64 位输出请用 printf("%lld")