func_code_string: #include <bits/stdc++.h>   using namespace std;   int frd[2110][2110], rev[2110][2110];   vector<int> v;   int main() {     int a, b, c, d, e, i, j, p, q, mx, mx1, len;     string x, y;     cin >> x >> y;     a = x.length();     b = y.length();     x =  %  + x;     y =  *  + y;     for (i = b; i >= 1; i--) {       for (j = a; j >= 1; j--) {         if (y[i] == x[j]) {           frd[i][j] = frd[i + 1][j + 1] + 1;         }       }       for (j = 1; j <= a; j++) {         if (y[i] == x[j]) {           rev[i][j] = rev[i + 1][j - 1] + 1;         }       }     }     for (i = 1; i <= b;) {       p = -1;       q = -1;       mx = -1;       mx1 = -1;       for (j = 1; j <= a; j++) {         if (frd[i][j] > mx) {           mx = frd[i][j];           p = j;         }       }       for (j = 1; j <= a; j++) {         if (rev[i][j] > mx1) {           mx1 = rev[i][j];           q = j;         }       }       len = max(mx, mx1);       if (len == 0) {         cout <<  -1  << endl;         return 0;       }       if (len == mx) {         v.push_back(p);         v.push_back(p + len - 1);       } else {         v.push_back(q);         v.push_back(q - len + 1);       }       i = i + len;     }     cout << v.size() / 2 << endl;     e = v.size();     for (i = 0; i < e; i = i + 2) {       cout << v[i] <<     << v[i + 1] << endl;     }     return 0;   }   