#include <cstdio>
#include <iostream>
#include <complex>
#include <vector>
#include <utility>
#include <algorithm>
#include <cassert>
#include <queue>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
vector<string> ans;
void search(string s, char c) {
if (c == 'a') {
ans.push_back(s);
} else {
rep (i, s.length()) {
if (s[i] == c) return;
if (s[i] == c - 1) {
string t(s);
t[i] = c;
search(t, c - 1);
}
}
search(s, c - 1);
}
}
int main() {
for (;;) {
string S;
cin >> S;
if (S == "#") return 0;
ans.clear();
search(S, 'z');
sort(ans.begin(), ans.end());
ans.erase(unique(ans.begin(), ans.end()), ans.end());
printf("%d\n", (int)ans.size());
if (ans.size() < 10) {
for (string s : ans) cout << s << endl;
} else {
rep (i, 5) cout << ans[i] << endl;
rep (i, 5) cout << ans[ans.size() - 5 + i] << endl;
}
}
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y29tcGxleD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxjYXNzZXJ0PgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgcmVwKGksIG4pIGZvciAoaW50IGkgPSAwOyBpIDwgKGludCkobik7IGkrKykKCnZlY3RvcjxzdHJpbmc+IGFuczsKCnZvaWQgc2VhcmNoKHN0cmluZyBzLCBjaGFyIGMpIHsKICBpZiAoYyA9PSAnYScpIHsKICAgIGFucy5wdXNoX2JhY2socyk7CiAgfSBlbHNlIHsKICAgIHJlcCAoaSwgcy5sZW5ndGgoKSkgewogICAgICBpZiAoc1tpXSA9PSBjKSByZXR1cm47CgogICAgICBpZiAoc1tpXSA9PSBjIC0gMSkgewogICAgICAgIHN0cmluZyB0KHMpOwogICAgICAgIHRbaV0gPSBjOwogICAgICAgIHNlYXJjaCh0LCBjIC0gMSk7CiAgICAgIH0KICAgIH0KICAgIHNlYXJjaChzLCBjIC0gMSk7CiAgfQp9CgppbnQgbWFpbigpIHsKICBmb3IgKDs7KSB7CiAgICBzdHJpbmcgUzsKICAgIGNpbiA+PiBTOwogICAgaWYgKFMgPT0gIiMiKSByZXR1cm4gMDsKCiAgICBhbnMuY2xlYXIoKTsKICAgIHNlYXJjaChTLCAneicpOwoKICAgIHNvcnQoYW5zLmJlZ2luKCksIGFucy5lbmQoKSk7CiAgICBhbnMuZXJhc2UodW5pcXVlKGFucy5iZWdpbigpLCBhbnMuZW5kKCkpLCBhbnMuZW5kKCkpOwogICAgcHJpbnRmKCIlZFxuIiwgKGludClhbnMuc2l6ZSgpKTsKICAgIGlmIChhbnMuc2l6ZSgpIDwgMTApIHsKICAgICAgZm9yIChzdHJpbmcgcyA6IGFucykgY291dCA8PCBzIDw8IGVuZGw7CiAgICB9IGVsc2UgewogICAgICByZXAgKGksIDUpIGNvdXQgPDwgYW5zW2ldIDw8IGVuZGw7CiAgICAgIHJlcCAoaSwgNSkgY291dCA8PCBhbnNbYW5zLnNpemUoKSAtIDUgKyBpXSA8PCBlbmRsOwogICAgfQogIH0KfQo=