func_code_string: #include <bits/stdc++.h>   using namespace std;   int max(int a, int b) {     if (a > b)       return a;     else       return b;   }   long long min(long long a, long long b) {     if (a < b)       return a;     else       return b;   }   int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }   int lcm(int a, int b) { return a * (b / gcd(a, b)); }   vector<bool> isPrime(1000005 + 1, true);   string tos(int n) {     stringstream ss;     ss << n;     return ss.str();   }   void seive() {     isPrime[0] = 0, isPrime[1] = 0;     for (long long i = 2; i * i <= 1000005; i++)       if (isPrime[i])         for (long long j = i * i; j <= 1000005; j += i) isPrime[j] = 0;   }   int dx[] = {1, -1, 0, 0};   int dy[] = {0, 0, 1, -1};   const int val = 1 << 20;   long long n, m, st, e, ans = 1, a[1111111], b[1111111];   int main() {     string s1, s2;     cin >> s1 >> s2;     long long i = 0, j = 0, beg = -1;     while (j < s2.size()) {       if (s1[i] == s2[j]) {         if (beg == -1) {           beg = j;           a[0] = j;         }         i++;       }       if (i == s1.size()) {         b[0] = j;         break;       }       j++;     }     i = s1.size();     j = s2.size();     beg = -1;     while (j >= 0) {       if (s1[i] == s2[j]) {         if (beg == -1) {           beg = j;           b[1] = j;         }         i--;       }       if (i < 0) {         a[1] = j;         break;       }       j--;     }     ans = max(0, a[1] - b[0]);     cout << ans <<   n ;     return 0;   }   