#include <cstdio>
#include<string.h>
#include<deque>
#define MAX 1000000
#define LIT 26
using namespace std;
char s[MAX+1], v[LIT];
deque<int>dq;
int main()
{
freopen("ordine.in", "r", stdin);
freopen("ordine.out", "w", stdout);
int i, pred=-1, a;
gets(s);
i=0;
while(s[i]!=0)
v[s[i++]-'a']++;
for(int i=0;i<LIT;++i)
if(v[i])
dq.push_back(i);
while(!dq.empty())
{
if(dq.front()!=pred){
printf("%c", dq.front()+'a');
v[dq.front()]--;
pred=dq.front();
if(v[pred]==0)
dq.pop_front();
}
else
{
a=dq.front();
dq.pop_front();
printf("%c", dq.front()+'a');
v[dq.front()]--;
pred=dq.front();
if(v[pred]==0)
dq.pop_front();
dq.push_front(a);
}
}
return 0;
}