/*
TASK: names
LANG: C
*/

#define DEBUG

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

#define MAX 32//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 (j<n&&tmp[j]==minim[j])
                 j++;
           if (tmp[j]<minim[j])
              for (j=0;j<n;j++)
                  minim[j]=tmp[j];

           ///132
           k=0;
           j=0;
           while (a[i]>=a[j]&&j<i) {
                 tmp[k++]=a[j];
                 j++;
                 }
           for (h=i;h<n;h++)
               tmp[k++]=a[h];
           for (h=j;h<i;h++)
               tmp[k++]=a[h];

           j=0;
           while (j<n&&tmp[j]==minim[j])
                 j++;
           if (tmp[j]<minim[j])
              for (j=0;j<n;j++)
                  minim[j]=tmp[j];
                  
           //213
           k=0;
           j=i;
           while (j<n&&a[j]<=a[0]) {
                 tmp[k++]=a[j];
                 j++;
                 }
           for (h=0;h<i;h++)
               tmp[k++]=a[h];
           for (h=j;h<n;h++)
               tmp[k++]=a[h];

           j=0;
           while (j<n&&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;
    }
