#include <bits/stdc++.h>
using namespace std;
char s[10008];
bool vl[2][10008];
string mk_str(int x, int y) {
  string str;
  for (int i = x; i <= y; i++) str.push_back(s[i]);
  return str;
}
int main() {
  scanf("%s", s);
  set<string> ss;
  int n = strlen(s);
  vl[0][n] = vl[1][n] = true;
  for (int i = n - 2; i > 4; i--) {
    string s2 = mk_str(i, i + 1), stmp;
    if (i + 2 < n) stmp = mk_str(i + 2, i + 3);
    if (s2 != stmp) {
      if (vl[0][i + 2] || vl[1][i + 2]) {
        vl[0][i] = true;
        ss.insert(s2);
      }
    } else {
      if (vl[1][i + 2]) {
        vl[0][i] = true;
        ss.insert(s2);
      }
    }
    if (i + 2 >= n) continue;
    string s3 = mk_str(i, i + 2);
    string stmp3 = mk_str(i + 3, i + 5);
    if (s3 != stmp3) {
      if (vl[0][i + 3] || vl[1][i + 3]) {
        vl[1][i] = true;
        ss.insert(s3);
      }
    } else {
      if (vl[0][i + 3]) {
        vl[1][i] = true;
        ss.insert(s3);
      }
    }
  }
  cout << ss.size() << endl;
  for (set<string>::iterator it = ss.begin(); it != ss.end(); it++) {
    printf("%s\n", it->c_str());
  }
  return 0;
}
