//思路是按照字串长度1-len,来组合所有的可能。
//去重并排序,用的是set
#include <iostream>
#include <string>
#include </string></iostream>
using namespace std;
int main()
{
string str_src;
cin>>str_src;
int len=str_src.length();
for(int i =1;i<=len;i++)//分割后的子字串的长度,从1开始
{
set<string> s_set;
for(int j =0;j<=len-i;j++)
{
s_set.insert(str_src.substr(j,i));
}
//把排序好的长度为i的所有字串打印出来:
set<string>::iterator it = s_set.begin();
if(i != 1)
cout<<" ";
while(it!=s_set.end())
{
cout<<*it;
it++;
if(it != s_set.end())
cout<<" ";
}
}
return 0;
}</string></string>