func_code_string: #include <bits/stdc++.h>   using namespace std;   char a[5005], b[5005];   int la, lb;   int memo[5005][5005];   int dp(int x, int y) {     if (x == la || y == lb)       return 0;     else if (memo[x][y] != -1) {       return memo[x][y];     } else {       int ans1 = dp(x, y + 1) % 1000000007;       int ans2 = 0;       if (a[x] == b[y]) {         ans2 = (dp(x + 1, y + 1) + 1) % 1000000007;       }       int ret = (ans1 + ans2) % 1000000007;       return memo[x][y] = ret;     }   }   int main() {     scanf( %s %s , a, b);     memset(memo, -1, sizeof(memo));     int i;     la = strlen(a);     lb = strlen(b);     int ans = 0;     for (i = 0; i < la; i++) {       ans = (ans + dp(i, 0)) % 1000000007;     }     printf( %d n , ans);     return 0;   }   