func_code_string: #include <bits/stdc++.h>   using namespace std;   long long bin_pow(long long x, long long y, long long m) {     long long ans;     if (y <= 0) return 1;     ans = bin_pow(x, y / 2, m);     if (y % 2 == 0) return (((ans % m) * (ans % m)) % m);     return (x % m * ((ans % m * ans % m))) % m;   }   long long mult(long long a, long long b, long long m) {     long long ans = ((a % m) * (b % m)) % m;     return ans;   }   long long sum(long long a, long long b, long long m) {     long long ans = (a % m + b % m) % m;     return ans;   }   long long diff(long long a, long long b, long long m) {     long long ans = ((a % m) - (b % m) + m) % m;     return ans;   }   long long gcd(long long a, long long b) {     if (b == 0) return a;     return gcd(b, a % b);   }   void swap(long long &a, long long &b) {     long long tm = a;     a = b;     b = tm;   }   long long compute_lps_array(string s) {     string s1 = s;     reverse(s1.begin(), s1.end());     s = s +  $  + s1;     long long sz = s.size();     vector<long long> lps(sz + 1, 0);     lps[0] = 0;     for (long long i = 1; i < sz; i++) {       long long j = lps[i - 1];       while (j != 0 && (s[i] != s[j])) j = lps[j - 1];       if (s[i] == s[j]) j++;       lps[i] = j;     }     return lps[sz - 1];   }   long long nCr(long long n, long long r, long long m) {     long long tm1 = bin_pow(r, 998244353 - 2, 998244353);     long long tm2 = bin_pow(m, 998244353 - 2, 998244353);     long long tm3 = n % 998244353;     long long ans = mult(tm3, mult(tm1, tm2, 998244353), 998244353);     return ans;   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     long long t = 1;     while (t--) {       string s, t;       long long ans = 0;       cin >> s >> t;       long long sz1 = s.size();       long long sz2 = t.size();       vector<long long> pre(sz2 + 2, 0), sfx(sz2 + 2, 0);       long long j = 0;       for (long long i = 0; i < sz1; i++) {         if (s[i] == t[j]) {           pre[j] = i;           j++;           if (j >= sz2) break;         }       }       j = sz2 - 1;       for (long long i = sz1 - 1; i >= 0; i--) {         if (s[i] == t[j]) {           sfx[j] = i;           j--;           if (j == -1) break;         }       }       ans = max(sfx[0], sz1 - pre[sz2 - 1] - 1LL);       for (long long i = 0; i < sz2 - 1; i++) {         long long df = sfx[i + 1] - pre[i] - 1;         ans = max(ans, df);       }       cout << ans << endl;     }   }   