func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( Ofast,unroll-loops )   #pragma GCC target( avx,avx2,fma )   using namespace std;   const long long sz = 3e3 + 10, mod = 998244353;   char s[sz], t[sz];   long long dp[sz][sz];   long long solve(long long l, long long r) {     if (l > r) return 1;     long long &ret = dp[l][r];     if (ret != -1) return ret;     long long rt = 0, idx = r - l + 1;     if (s[idx] == t[r] || t[r] ==  $ ) rt = (rt + solve(l, r - 1)) % mod;     if (s[idx] == t[l] || t[l] ==  $ ) rt = (rt + solve(l + 1, r)) % mod;     return ret = rt;   }   int main() {     scanf( %s , s + 1);     scanf( %s , t + 1);     long long n = strlen(s + 1), m = strlen(t + 1);     long long m2 = m;     while (m2 < n) t[++m2] =  $ ;     memset(dp, -1, sizeof(dp));     long long tot = 0;     for (long long i = m; i <= n; i++) tot = (tot + solve(1, i)) % mod;     cout << tot << endl;     return 0;   }   