#include <bits/stdc++.h>
using namespace std;
set<string> ans;
map<int, int> mm;
int main() {
  string s;
  cin >> s;
  int i, j, len, k, l;
  len = s.length();
  if (len >= 8) {
    ans.insert(s.substr(len - 3, 3));
    ans.insert(s.substr(len - 2, 2));
    mm[len - 3] = 1;
    mm[len - 2] = 1;
  } else if (len >= 7) {
    ans.insert(s.substr(len - 2, 2));
    mm[len - 2] = 1;
  }
  mm[len] = 1;
  for (i = len - 3; i >= 0; i--) {
    if (i - 2 >= 5) {
      if (mm.count(i + 1)) {
        if (mm.count(i + 3) || (mm.count(i + 4) && (i + 3 <= len - 1) &&
                                s.substr(i + 1, 3) != s.substr(i - 2, 3))) {
          ans.insert(s.substr(i - 2, 3));
          mm[i - 2] = 1;
        }
      }
    }
    if (i - 1 >= 5) {
      if (mm.count(i + 1)) {
        if (mm.count(i + 4) || (mm.count(i + 3) && (i + 2) <= len - 1 &&
                                s.substr(i + 1, 2) != s.substr(i - 1, 2))) {
          ans.insert(s.substr(i - 1, 2));
          mm[i - 1] = 1;
        }
      }
    }
  }
  cout << ans.size() << "\n";
  for (auto it = ans.begin(); it != ans.end(); it++) {
    cout << *it << "\n";
  }
}
