func_code_string: #include <bits/stdc++.h>   using namespace std;   char s[3009], t[3009];   long long dp[3009][3009];   int n, m;   long long bigmod(long long a, long long p) {     long long r = 1ll;     while (p) {       if ((p & 1ll)) {         r = (a * r) % 998244353ll;       }       a = (a * a) % 998244353ll;       p >>= 1;     }     return r;   }   long long func(int i, int j) {     if (i < 0) {       return 1ll;     }     if (j >= m) {       return bigmod(2, i + 1);     }     long long &ret = dp[i][j];     if (~ret) return ret;     ret = 0;     if (s[i] == t[j]) ret = func(i - 1, j + 1);     if (j + i >= m || (s[i] == t[i + j])) ret += func(i - 1, j);     if (ret >= 998244353ll) ret -= 998244353ll;     return ret;   }   int main() {     scanf( %s , s);     scanf( %s , t);     n = strlen(s);     m = strlen(t);     memset(dp, -1, sizeof(dp));     long long ans = 0;     for (int i = n; i >= m; i--) {       ans += func(i - 1, 0);       if (ans >= 998244353ll) ans -= 998244353ll;     }     if (ans >= 998244353ll) ans -= 998244353ll;     printf( %lld n , ans);     return 0;   }   