package oj.test;
import java.util.LinkedList;
import java.util.Scanner;
/*
* 字符串排序
* 规则1:英文字母从A到Z排列,不区分大小写。
* 如,输入:Type 输出:epTy
* 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。
* 如,输入:BabA 输出:aABb
* 规则3:非英文字母的其它字符保持原来的位置。
* 如,输入:By?e 输出:Be?y
*
* 样例:
* 输入:
* A Famous Saying: Much Ado About Nothing(2012/8).
* 输出:
* A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
* */
public class Demo11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int flag = 0 ;
char[] arr = new char[str.length()];
LinkedList<Character> link = new LinkedList<Character>();
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
if(!Character.isLetter(ch))
arr[i] =ch;
else{
if(link.isEmpty())
link.add(ch);
else{
flag = link.size()-1;
while(flag>=0 && Character.toLowerCase(link.get(flag)) > Character.toLowerCase(ch)){
flag--;
}
link.add(flag+1, ch);
}
}
}
flag=0;
for(int i =0;i<str.length();i++){
if((int)arr[i]==0)
System.out.print(link.get(flag++));
else
System.out.print(arr[i]);
}
}
}