/*
TASK:names
LANG:C++
*/
#include <stdio.h>

short int s[2000001],c;
int d[2000001],i,j,mi,len;

int cmpf(int a,int b,int f){
    int h=b;
    while(b<len&&s[a]==s[b]){
        if(s[b]>s[f]) return 1;
        a++;b++;
    }
    if(b==len) return s[f]<=s[a];
    if(s[a]<s[b]) return 0;
    return 1;
}

int main(){
    while((c=getchar())!=EOF){
        s[0]=c;
        for(i=1,mi=0;(c=getchar())!='\n';i++){
            s[i]=c;
            if(c==s[mi]) {d[0]++;d[d[0]]=i;}
            else if(c<s[mi]) {d[0]=1;d[1]=i;mi=i;}
        }
        s[i]=255;len=i;
        if(d[1]!=0){
            for(i=2,mi=1;i<=d[0];i++){
                if(cmpf(d[mi],d[i],0)) mi=i;
            }
            for(i=d[mi];s[0]>=s[i];i++) putchar(s[i]);
            for(j=0;j<d[mi];j++) putchar(s[j]);
            for(;s[i]<255;i++) putchar(s[i]);
            putchar('\n');
        } else {
            if(d[0]==1){
                for(i=1,mi=1,d[1]=1;i<len;i++){
                    if(s[i]==s[mi]) {d[0]++;d[d[0]]=i;}
                    else if(s[i]<s[mi]) {d[0]=1;d[1]=i;mi=i;}
                }
                for(i=2,mi=1;i<=d[0];i++){
                    if(cmpf(d[mi],d[i],1)) mi=i;
                }
                putchar(s[0]);
                for(i=d[mi];s[i]<255;i++) putchar(s[i]);
                for(i=1;i<d[mi];i++) putchar(s[i]);
                putchar('\n');
            } else {
                for(i=3,mi=2;i<=d[0];i++){
                    if(cmpf(d[mi],d[i],1)) mi=i;
                }
                if(cmpf(0,d[mi],0)){
                    putchar(s[0]);
                    for(i=d[mi];s[i]<255;i++) putchar(s[i]);
                    for(i=1;i<d[mi];i++) putchar(s[i]);
                    putchar('\n');
                }else{
                    putchar(s[0]);
                    for(i=0;s[i]<255;i++){
                        if(i==d[d[0]]) continue;
                        putchar(s[i]);
                    }
                    putchar('\n');
                }
            }
        }
    }
    return 0;
}

