#include <bits/stdc++.h>
using namespace std;
string str, str1;
set<string> s;
bool dp[10005][2];
int main() {
  cin >> str;
  int n = str.length();
  for (int i = n - 1; i >= 5; i--) {
    if (i + 2 <= n) {
      if (i + 2 == n || dp[i + 2][1] ||
          dp[i + 2][0] && str.substr(i + 2, 2) != str.substr(i, 2)) {
        dp[i][0] = true;
        s.insert(str.substr(i, 2));
      }
    }
    if (i + 3 <= n) {
      if (i + 3 == n || dp[i + 3][0] ||
          dp[i + 3][1] && str.substr(i + 3, 3) != str.substr(i, 3)) {
        dp[i][1] = true;
        s.insert(str.substr(i, 3));
      }
    }
  }
  cout << s.size() << endl;
  for (set<string>::iterator it = s.begin(); it != s.end(); ++it) {
    cout << *it << endl;
  }
  return 0;
}
