#include <bits/stdc++.h>
using namespace std;
int n;
string s;
vector<vector<bool>> vis;
set<string> suffs;
void check(int i, int pl) {
  if (vis[pl][i]) return;
  vis[pl][i] = 1;
  if (i - 1 > 4) {
    string x = s.substr(i - 1, 2);
    if (pl || x != s.substr(i + 1, 2)) {
      suffs.insert(x);
      check(i - 2, 0);
    }
  }
  if (i - 2 > 4) {
    string x = s.substr(i - 2, 3);
    if (!pl || x != s.substr(i + 1, 3)) {
      suffs.insert(x);
      check(i - 3, 1);
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.precision(10);
  cout << fixed;
  cin >> s;
  n = s.size();
  vis.assign(2, vector<bool>(n));
  check(n - 1, 0);
  check(n - 1, 1);
  cout << suffs.size() << "\n";
  for (string x : suffs) {
    cout << x << "\n";
  }
  return 0;
}
