#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  string s;
  set<string> st;
  cin >> s;
  n = s.size();
  vector<int> a(n, 0);
  vector<int> b(n, 0);
  a[n - 2] = 1;
  b[n - 3] = 1;
  if (n - 2 > 4) {
    st.insert(s.substr(n - 2, 2));
  }
  if (n - 3 > 4) {
    st.insert(s.substr(n - 3, 3));
  }
  for (int i = n - 4; i > 4; i--) {
    if (b[i + 2] || (s.substr(i, 2) != s.substr(i + 2, 2) && a[i + 2])) {
      a[i] = 1;
      st.insert(s.substr(i, 2));
    }
    if (a[i + 3] || (s.substr(i + 3, 3) != s.substr(i, 3) && b[i + 3])) {
      b[i] = 1;
      st.insert(s.substr(i, 3));
    }
  }
  cout << st.size() << '\n';
  set<string>::iterator it = st.begin();
  while (it != st.end()) {
    cout << *it << '\n';
    it++;
  }
  return 0;
}
