/*
TASK: names
LANG: C
*/

//#define DEBUG

#include<stdio.h>
#include<string.h>

#define MAX 1048576

char a[MAX];
char tmp[MAX];
char minim[MAX];
int n;
int h,i,j,k;

int main () {
    #ifdef DEBUG
    freopen("testn.txt","rt",stdin);
    #endif
    do {
       gets(a);
       if (feof(stdin)) break;
       memset(minim,0,sizeof(minim));
       n=strlen(a);
       for (i=0;i<n;i++)
           minim[i]=a[i];
       for (i=1;i<n;i++) {
           k=0;
           for (j=i;j<n;j++)
               tmp[k++]=a[j];

           for (j=0;j<i;j++)
               tmp[k++]=a[j];
               
           j=0;
           while (tmp[j]==minim[j])
                 j++;
           if (tmp[j]<minim[j])
              for (j=0;j<n;j++)
                  minim[j]=tmp[j];

           for (h=i+1;h<n;h++) {
               k=0;
               for (j=0;j<i;j++)
                   tmp[k++]=a[j];
               for (j=h;j<n;j++)
                   tmp[k++]=a[j];
               for (j=i;j<h;j++)
                   tmp[k++]=a[j];

               j=0;
               while (tmp[j]==minim[j])
                     j++;
               if (tmp[j]<minim[j])
                  for (j=0;j<n;j++)
                      minim[j]=tmp[j];

               k=0;
               for (j=i;j<h;j++)
                   tmp[k++]=a[j];
               for (j=0;j<i;j++)
                   tmp[k++]=a[j];
               for (j=h;j<n;j++)
                   tmp[k++]=a[j];

               j=0;
               while (tmp[j]==minim[j])
                     j++;
               if (tmp[j]<minim[j])
                  for (j=0;j<n;j++)
                      minim[j]=tmp[j];
                      
               }
                  
           }
       printf("%s\n",minim);
       } while (!feof(stdin));
    return 0;
    }
