#include <bits/stdc++.h>
using namespace std;
string s, p, q1, q2, b[2 * 10005];
int l, f[4][10005], tot = 0;
set<string> ans;
int main() {
  cin >> s;
  l = s.size();
  s = ' ' + s;
  if (l <= 6)
    printf("0\n");
  else {
    memset(f, 0, sizeof(f));
    f[2][l - 1] = 1;
    p = s.substr(l - 1, 2);
    ans.insert(p);
    if (l >= 8) {
      f[3][l - 2] = 1;
      p = s.substr(l - 2, 3);
      ans.insert(p);
    }
    for (int i = l - 3; i >= 6; i--)
      for (int j = 2; j <= 3; j++) {
        p = s.substr(i, j);
        q1 = s.substr(i + j, 2);
        q2 = s.substr(i + j, 3);
        if (f[2][i + j] && p != q1) {
          f[j][i] = 1;
          ans.insert(p);
        }
        if (f[3][i + j] && p != q2) {
          f[j][i] = 1;
          ans.insert(p);
        }
      }
    set<string>::iterator i;
    for (i = ans.begin(); i != ans.end(); i++) {
      b[tot++] = *i;
    }
    tot = ans.size();
    sort(b, b + tot);
    printf("%d\n", tot);
    for (int i = 0; i < tot; i++) cout << b[i] << endl;
  }
  return 0;
}
