#include <bits/stdc++.h>
using namespace std;
char s[10005];
map<int, int> flag[10005];
set<string> ans;
int code(const string &s) {
  int ret = 0;
  for (int i = 0; i < s.size(); i++) ret = ret * 27 + (s[i] - 'a' + 1);
  return ret;
}
void go(int n, int last) {
  if (flag[n].count(last)) return;
  flag[n][last] = 1;
  if (n >= 7) {
    string suf = "";
    suf += s[n - 2];
    suf += s[n - 1];
    int c = code(suf);
    if (c != last) {
      ans.insert(suf);
      go(n - 2, c);
    }
  }
  if (n >= 8) {
    string suf = "";
    suf += s[n - 3];
    suf += s[n - 2];
    suf += s[n - 1];
    int c = code(suf);
    if (c != last) {
      ans.insert(suf);
      go(n - 3, c);
    }
  }
}
int main() {
  scanf("%s", s);
  go(strlen(s), 0);
  printf("%d\n", (int)ans.size());
  for (set<string>::iterator it = ans.begin(); it != ans.end(); it++)
    printf("%s\n", it->c_str());
}
