#include <iostream>
#include <string>
//用到了向量容器,把它理解成动态数组
#include <vector>
using namespace std;
string str_sort(string str)
{
//字符向量的声明
vector <char> vec;
//把字符串中的字母按字母检索出来并存在向量中
for(int j = 0;j<26;j++)
{
for(int i = 0;i<str.size();i++)
{
if(str[i]=='a'+j||str[i]=='A'+j)
{
vec.push_back(str[i]);
}
}
}
//保留原字符串中非字母元素,将字母元素按照向量表中顺序填入
int num = 0;
for(int i = 0;i<str.size();i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
{
str[i] = vec[num];
num++;
}
}
return str;
}
int main()
{
string str;
//注意通过这个函数可以读取一行输入
while(getline(cin,str))
{
cout << str_sort(str) << endl;
}
return 0;
}