func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     long long n, m, i, j;     string s;     cin >> s;     n = s.size();     string cur;     if (s.size() <= 6) {       cout << 0;       return 0;     }     for (i = 5; i < s.size(); i++) {       cur += s[i];     }     if (cur.size() == 2) {       cout << 1 << endl << cur;       return 0;     }     reverse(cur.begin(), cur.end());     string inf =  --- ;     vector<string> dp2(10500), dp3(10500);     vector<string> ans;     dp2[0] = inf;     dp2[1] += cur[0];     dp2[1] += cur[1];     dp3[0] = inf;     dp3[1] = inf;     dp3[2] += cur[0];     dp3[2] += cur[1];     dp3[2] += cur[2];     dp2[2] = inf;     ans.push_back(dp2[1]);     ans.push_back(dp3[2]);     for (i = 3; i < cur.size(); i++) {       bool two = true;       if (dp2[i - 2] == inf && dp3[i - 2] == inf) {         dp2[i] = inf;         two = false;       }       {         if (dp2[i - 2] != inf) {           string ss;           ss += cur[i - 1];           ss += cur[i];           if (ss != dp2[i - 2]) {             dp2[i] = ss;             ans.push_back(ss);           } else             two = false;         }         {           if (dp3[i - 2] != inf) {             two = true;             string ss;             ss += cur[i - 1];             ss += cur[i];             dp2[i] = ss;             ans.push_back(ss);           }         }       }       if (!two) dp2[i] = inf;       bool three = true;       if (dp3[i - 3] == inf && dp2[i - 3] == inf) {         dp3[i] = inf;         three = false;       }       {         if (dp3[i - 3] != inf) {           string ss;           ss += cur[i - 2];           ss += cur[i - 1];           ss += cur[i];           if (ss != dp3[i - 3]) {             dp3[i] = ss;             ans.push_back(ss);           } else             three = false;         }         {           if (dp2[i - 3] != inf) {             string ss;             ss += cur[i - 2];             ss += cur[i - 1];             ss += cur[i];             ans.push_back(ss);             dp3[i] = ss;             three = true;           }         }       }       if (!three) dp3[i] = inf;     }     for (i = 0; i < ans.size(); i++) {       reverse(ans[i].begin(), ans[i].end());     }     sort(ans.begin(), ans.end());     set<string> h;     set<string>::iterator ii;     for (i = 0; i < ans.size(); i++) h.insert(ans[i]);     cout << h.size() << endl;     for (ii = h.begin(); ii != h.end(); ii++) cout << *ii << endl;     return 0;   }   