#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const long long CFMOD = 998244353;
const double PI = 3.14159265358;
const double EPS = 1e-8;
void solve() {
  string s, tmp;
  set<string> ans;
  vector<bool> dp2, dp3;
  cin >> s;
  reverse(s.begin(), s.end());
  dp2.resize(((int)s.size()));
  dp3.resize(((int)s.size()));
  if (((int)s.size()) >= 7) dp2[0] = true;
  if (((int)s.size()) >= 8) dp3[0] = true;
  if (((int)s.size()) >= 9 && s.substr(0, 2) != s.substr(2, 2)) dp2[2] = true;
  if (((int)s.size()) >= 10) dp3[2] = true;
  for (int i = 3; i < ((int)s.size()); i++) {
    if (i + 7 <= ((int)s.size()))
      dp2[i] =
          dp3[i - 3] | (dp2[i - 2] & (s.substr(i - 2, 2) != s.substr(i, 2)));
    if (i + 8 <= ((int)s.size()))
      dp3[i] =
          dp2[i - 2] | (dp3[i - 3] & (s.substr(i - 3, 3) != s.substr(i, 3)));
  }
  for (int i = 0; i < (((int)s.size())); i++) {
    if (dp2[i]) {
      tmp = s.substr(i, 2);
      reverse(tmp.begin(), tmp.end());
      ans.insert(tmp);
    }
    if (dp3[i]) {
      tmp = s.substr(i, 3);
      reverse(tmp.begin(), tmp.end());
      ans.insert(tmp);
    }
  }
  cout << ((int)ans.size()) << '\n';
  for (auto i : ans) cout << i << '\n';
}
int main() {
  int t = 1;
  while (t--) {
    solve();
  }
}
