#include <bits/stdc++.h>
using namespace std;
string str;
int N;
set<string> ss;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> str;
  N = str.length();
  vector<bool> flag(N + 4, false);
  flag[N] = true;
  for (int i = N - 2; i >= 5; --i) {
    bool do2 = true, do3 = true;
    if (i + 3 < N)
      if (str[i] == str[i + 2] && str[i + 1] == str[i + 3]) do2 = flag[i + 5];
    if (!flag[i + 2]) do2 = false;
    if (i + 5 < N)
      if (str[i] == str[i + 3] && str[i + 1] == str[i + 4] &&
          str[i + 2] == str[i + 5])
        do3 = flag[i + 5];
    if (!flag[i + 3]) do3 = false;
    if (do2) ss.insert(str.substr(i, 2)), flag[i] = true;
    if (do3) ss.insert(str.substr(i, 3)), flag[i] = true;
  }
  cout << ss.size() << endl;
  for (set<string>::iterator it = ss.begin(); it != ss.end(); ++it) {
    cout << *it << endl;
  }
  return 0;
}
