#include <bits/stdc++.h>
using namespace std;
int dp2[10100], dp3[10100];
string s;
set<string> v;
int main() {
  cin >> s;
  for (int i = (int)s.size() - 2; i > 4; i--) {
    if ((i == s.size() - 2) || dp3[i + 2] ||
        (s.substr(i, 2) != s.substr(i + 2, 2) && dp2[i + 2])) {
      dp2[i] = 1;
      v.insert(s.substr(i, 2));
    }
    if ((i <= s.size() - 3) &&
        (i == s.size() - 3 || dp2[i + 3] ||
         (s.substr(i, 3) != s.substr(i + 3, 3) && dp3[i + 3]))) {
      dp3[i] = 1;
      v.insert(s.substr(i, 3));
    }
  }
  printf("%d\n", v.size());
  set<string>::iterator it = v.begin();
  for (it; it != v.end(); it++) {
    cout << *it << endl;
  }
  return 0;
}
