#include <stdbool.h>
#include <stdio.h>
#include <string.h>
bool isword(char c)
{
if((c>='a'&&c<='z' )||(c>='A'&&c<='Z'))
{
return true;
}
else
{
return false;
}
}
void swap(char* str , int i, int j)
{
char temp;
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
bool alignandcomparetodecrease(char a, char b)
{
char tempa = a>'Z'? a-32:a;
char tempb = b>'Z'? b-32:b;
if(tempa<tempb)
{
return true;
}
else {
return false;
}
}
void sort(char* str, int length)
{
for(int i = 0;i<length;i++)
{
for(int j = length-1;j>i;j--)
{
if(alignandcomparetodecrease(str[j], str[j-1]))
{
swap(str, j, j-1);
}
}
}
}
int main() {
char str[1000];
scanf("%[^\n]",str);
int nonwordindex[1000];
for(int i =0;i<1000;i++)
{
nonwordindex[i] =1001;
}
int len = strlen(str);
char tempstr[1000];
char res[strlen(str)];
int index = 0;
int tempindex = 0;
for(int i =0;i<len;i++)
{
if(!isword(str[i]))
{
nonwordindex[index++] = i;
}
else {
tempstr[tempindex++] = str[i];
}
}
sort(tempstr,strlen(tempstr));
index = 0;
int strindex = 0;
for(int i =0;i<strlen(str);i++)
{
if(i==nonwordindex[index])
{
index++;
printf("%c" ,str[i]);
}
else {
printf("%c",tempstr[strindex++]);
}
}
return 0;
}