func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 5;   string ans[N];   int len[N];   int dp[N];   string get_ans(const string &add) {     if (add.size() <= 10) {       auto res = add;       reverse(res.begin(), res.end());       return res;     }     string res;     int t = add.size();     for (int i = t - 1; i >= t - 5; i--) {       res += add[i];     }     res +=  ... ;     res += add[1];     res += add[0];     return res;   }   bool check(const string &a) {     int t = a.size();     if (a[t - 3] < a[t - 1])       return true;     else if (a[t - 3] > a[t - 1])       return false;     return dp[t - 1] < 0 || a[dp[t - 1]] < a[t - 1];   }   int main() {     string s;     cin >> s;     string a;     bool pre = 0;     memset(dp, -1, sizeof(dp));     for (int i = s.size() - 1; i >= 0; i--) {       a += s[i];       int t = a.size();       if (t > 1) {         if (a[t - 1] == a[t - 2]) {           dp[t - 1] = dp[t - 2];         } else {           dp[t - 1] = t - 2;         }       }       if (!pre) {         if (t >= 2) {           if (a[t - 1] == a[t - 2] && (i + 1 == s.size() || s[i] == s[i + 1]) &&               (t == 2 || check(a))) {             a.pop_back();             a.pop_back();             pre = 1;           }         }       } else {         pre = 0;       }       len[i] = a.size();       ans[i] = get_ans(a);     }     for (int i = 0; i < s.size(); i++) {       cout << len[i] <<     << ans[i] << endl;     }     return 0;   }   