I am trying to solve this problem in spoj

I need to find the number of rotations of a given string that will make it lexicographically smallest among all the rotations.

For example:

Original: ama

First rotation: maa

Second rotation: aam This is the lexicographically smallest rotation so the answer is 2.

Here's my code:

string s,tmp;
    char ss[100002];
    scanf("%s",ss);
    s=ss;
    tmp=s;
    int i,len=s.size(),ans=0,t=0;
    for(i=0;i<len;i++)
    {
        string x=s.substr(i,len-i)+s.substr(0,i);
        if(x<tmp)
        {
            tmp=x;
            t=ans;
        }
        ans++;
    }

    cout<<t<<endl;

I am getting "Time Limit Exceeded" for this solution. I don't understand what optimizations can be made. How can I increase the speed of my solution?

Edit
Report