#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int dp[100100][2];
int main() {
  cin.sync_with_stdio(0);
  cin.tie(0);
  string s;
  cin >> s;
  if (s.length() <= 6) {
    cout << "0\n";
    return 0;
  }
  s = s.substr(5);
  memset(dp, 0, sizeof dp);
  reverse(s.begin(), s.end());
  dp[1][0] = 1;
  dp[2][1] = 1;
  set<string> v;
  string x = s.substr(0, 2);
  reverse(x.begin(), x.end());
  v.insert(x);
  x = s.substr(0, 3);
  reverse(x.begin(), x.end());
  v.insert(x);
  for (int i = 3; i <= s.length() - 1; i++) {
    if (dp[i - 2][0]) {
      if (s.substr(i - 1, 2) != s.substr(i - 3, 2)) dp[i][0] = 1;
    }
    if (dp[i - 2][1]) dp[i][0] = 1;
    if (dp[i - 3][0]) dp[i][1] = 1;
    if (dp[i - 3][1]) {
      if (s.substr(i - 2, 3) != s.substr(i - 5, 3)) dp[i][1] = 1;
    }
    if (dp[i][0]) {
      x = s.substr(i - 1, 2);
      reverse(x.begin(), x.end());
      v.insert(x);
    }
    if (dp[i][1]) {
      x = s.substr(i - 2, 3);
      reverse(x.begin(), x.end());
      v.insert(x);
    }
  }
  cout << v.size() << "\n";
  for (auto str : v) cout << str << "\n";
  return 0;
}
