#include<iostream>
#include<string>
#include<map>
#include<queue>
using namespace std;
map<string,int> map1;
queue<string> myqueue;
void partition(string s,char x){//将x插入字符串的各个位置
for(int i=0;i<=s.size();i++){
string a=s;
myqueue.push(a.insert(i,1,x));
}
}
int main()
{
string s;
// partition("abc","d");
cin>>s;
string s1=s.substr(0,1);
myqueue.push(s1);
while(myqueue.front().size() != s.size()){
partition(myqueue.front(),s[myqueue.front().size()]);
myqueue.pop();
}
while(!myqueue.empty()){
string c=myqueue.front();
map1[c]++;
myqueue.pop();
}
for(auto it: map1){
cout<<it.first<<endl;
}
}