#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;
    }
}