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