func_code_string: #include <bits/stdc++.h>   using namespace std;   set<string> setao;   string s;   const int N = 10010;   int pd[N][4], n;   char solve(int k, int last) {     if (k == n) return 1;     if (n - k == 1 or k > n) return 0;     if (pd[k][last] != -1) return pd[k][last];     string ant;     for (int i = last; i >= 1; i--) {       ant.push_back(s[k - i]);     }     string x;     for (int i = 0; i < 2; i++) x.push_back(s[k + i]);     char flag = 0;     if (x != ant) {       if (solve(k + 2, 2)) {         setao.insert(x);         flag = 1;       }     }     if (n - k > 2) {       x.push_back(s[k + 2]);       if (x != ant) {         if (solve(k + 3, 3)) {           setao.insert(x);           flag = 1;         }       }     }     return pd[k][last] = flag;   }   int main(void) {     memset(pd, -1, sizeof pd);     cin >> s;     n = s.size();     for (int i = 5; i < n; i++) {       solve(i, 0);     }     printf( %d n , (int)setao.size());     for (set<string>::iterator it = setao.begin(); it != setao.end(); it++) {       cout << *it << endl;     }     return 0;   }   