#include <iostream>
#include <string>
using namespace std;
int main()
{
string input;
while(getline(cin, input))
{
string tmp = input;
int k = 0;
int length = input.length();
//冒泡排序
for (int i=0; i<length;i++)
{
if(input[i]-'a' >= 0 && input[i]-'z' <= 0)
{
tmp[k] = input[i];
k++;
}
else if(input[i]-'A' >= 0 && input[i]-'Z' <= 0)
{
tmp[k] = input[i];
k++;
}
}
for(int i=0; i<k;i++)
{
for(int j=0; j<k-i-1; j++)
{
//判断类型
if(tmp[j]-'a' >= 0 && tmp[j]-'z' <= 0)
{
if(tmp[j+1]-'a' >= 0 && tmp[j+1]-'z' <= 0)
{
if(tmp[j]>tmp[j+1])
{
swap(tmp[j], tmp[j+1]);
}
}
else if(tmp[j+1]-'A' >= 0 && tmp[j+1]-'Z' <= 0)
{
if(tmp[j]>tmp[j+1]+32)
{
swap(tmp[j], tmp[j+1]);
}
}
}
else if(tmp[j]-'A' >= 0 && tmp[j]-'Z' <= 0)
{
if(tmp[j+1]-'a' >= 0 && tmp[j+1]-'z' <= 0)
{
if(tmp[j]>tmp[j+1]-32)
{
swap(tmp[j], tmp[j+1]);
}
}
else if(tmp[j+1]-'A' >= 0 && tmp[j+1]-'Z' <= 0)
{
if(tmp[j]>tmp[j+1])
{
swap(tmp[j], tmp[j+1]);
}
}
}
}
}
k = 0;
for (int i=0; i<length;i++)
{
if(input[i]-'a' >= 0 && input[i]-'z' <= 0)
{
cout<<tmp[k];
k++;
}
else if(input[i]-'A' >= 0 && input[i]-'Z' <= 0)
{
cout<<tmp[k];
k++;
}
else
{
cout<<input[i];
}
}
cout<<endl;
}
return 0;
}


京公网安备 11010502036488号