/*
TASK: names
LANG: C++
*/

#include <iostream>
#include <cstdio>
#include <fstream>
#include <vector>
#include <cstdlib>
#define MAX 1024
#define in cin
#define out cout


using namespace std;
//ifstream in; ofstream out;

int n, m;
string best, str;



void dowork(void)
{
int i, c, j;
int flag;
string p1, p2, p3, cur;

best = str; n = str.size();

for (i=1; i<n; i++)
    {
    flag = 1;
    for (c=0; c<n; c++) if (best[c] < str[(i+c)%n]) {flag = 0; break;}
    
    if (flag) {best = ""; for (c=0; c<n; c++) best += str[(i+c)%n];}
    }

p1 = ""; p2 = ""; p3 = "";

for (i=1; i<n-1; i++)
    {
    p1 += str[i-1]; p2 = "";
    
    for (c=i+1; c<n; c++)
        {
        p2 += str[c-1];
        p3 = ""; for (j=c; j<n; j++) p3 += str[j];
        
        cur = p1 + p3 + p2; if (best > cur) best = cur;
        cur = p2 + p1 + p3; if (best > cur) best = cur;
        cur = p2 + p3 + p1; if (best > cur) best = cur;
        cur = p3 + p1 + p2; if (best > cur) best = cur;
        }
    }

return;
}


int main(void)
{

//in.open("names.in"); out.open("names.out");

while(42)
{
str = ""; in >> str;
if (str.size() == 0) break;

dowork();
out << best << endl;
}

return 0;
}
