func_code_string: #include <bits/stdc++.h>   using namespace std;   const int mod = 1000000007;   ;   const int maxn = 410;   unsigned long long powmod(unsigned long long n, unsigned long long k) {     unsigned long long ret = 1;     while (k) {       if (k & 1) ret = ret * n % mod;       n = n * n % mod;       k >>= 1;     }     return ret;   }   int nxt[maxn][26];   int dp[maxn][maxn];   void upd(int& n, int k) {     if (n < 0 || n > k) n = k;   }   bool gao(const string& s, const string& t1, const string& t2) {     memset(dp, -1, sizeof(dp));     for (int i = 0; i <= t1.size(); i++)       for (int j = 0; j <= t2.size(); j++)         if (dp[i][j] >= 0 || i + j == 0) {           int p = dp[i][j] + 1;           if (i < t1.size()) {             int n = nxt[p][t1[i] -  a ];             if (n >= 0) upd(dp[i + 1][j], n);           }           if (j < t2.size()) {             int n = nxt[p][t2[j] -  a ];             if (n >= 0) upd(dp[i][j + 1], n);           }         }     return dp[t1.size()][t2.size()] >= 0;   }   char str[maxn];   char tt[maxn];   int main() {     int t;     cin >> t;     while (t--) {       cin >> str >> tt;       memset(nxt, -1, sizeof(nxt));       for (int i = strlen(str) - 1; i >= 0; i--) {         memcpy(nxt[i], nxt[i + 1], sizeof(nxt[i]));         nxt[i][str[i] -  a ] = i;       }       bool yes = false;       if (strlen(tt) == 1)         yes = (nxt[0][tt[0] -  a ] >= 0);       else {         for (int i = 0; tt[i + 1]; i++) {           char tmp = tt[i + 1];           tt[i + 1] = 0;           string t1 = tt;           tt[i + 1] = tmp;           string t2 = tt + i + 1;           if (gao(str, t1, t2)) {             yes = true;             break;           }         }       }       if (yes)         puts( YES );       else         puts( NO );     }   }   