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