/*
TASK:names
LANG:C
*/

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

char buff[2000002], best[2000002], curr[2000002];

void calc(void)
{
  static long i, j, n;
  n=strlen(buff);
  strcpy(best, buff);
  for(i=1; i<n; ++i)
  {
    memmove(curr, buff+i, n-i);
    memmove(curr+n-i, buff, i);
    curr[n]=0;
    if(strcmp(curr, best)<0)
      strcpy(best, curr);
  }
  for(i=1; i<n-1; ++i)
    for(j=i+1; j<n; ++j)
    {
      memmove(curr, buff+i, j-i);
      memmove(curr+j-i, buff, i);
      memmove(curr+j, buff+j, n-j);
      curr[n]=0;
      if(strcmp(curr, best)<0)
        strcpy(best, curr);
      memmove(curr, buff, i);
      memmove(curr+i, buff+j, n-j);
      memmove(curr+n+i-j, buff+i, j-i);
      if(strcmp(curr, best)<0)
        strcpy(best, curr);
    }
}

int main(void)
{
  while(gets(buff)!=NULL)
  {
    calc();
    printf("%s\n", best);
  }
  return 0;
}
