func_code_string: #include <bits/stdc++.h>   using namespace std;   int a[] = {2, 7, 2, 3, 3, 4, 2, 5, 1, 2};   const int Q = 1e9 + 7;   int main() {     string s, t;     cin >> s >> t;     vector<int> p(t.length());     for (int i = 1; i < t.length(); ++i) {       int k = p[i - 1];       while (k > 0) {         if (t[k] == t[i]) {           p[i] = k + 1;           break;         }         k = p[k - 1];       }       if (!p[i] && t[i] == t[0]) p[i] = 1;     }     vector<int> x(s.length());     if (s[0] == t[0]) x[0] = 1;     for (int i = 1; i < s.length(); ++i) {       int k = x[i - 1];       if (k == t.length()) k = p[k - 1];       while (k > 0) {         if (s[i] == t[k]) {           x[i] = k + 1;           break;         }         k = p[k - 1];       }       if (!x[i] && s[i] == t[0]) x[i] = 1;     }     vector<int> sum(s.length() + 1), r(s.length() + 1), h(s.length() + 1);     sum[0] = 0;     h[0] = 0;     for (int i = 0; i < s.length(); ++i) {       if (x[i] == t.length()) {         r[i + 1] = (h[i - t.length() + 1] + i - t.length() + 2) % Q;       } else {         r[i + 1] = r[i];       }       sum[i + 1] = (sum[i] + r[i + 1]) % Q;       h[i + 1] = (h[i] + sum[i + 1]) % Q;     }     cout << sum[s.length()];     return 0;   }   