Let us call a pair of integer numbers m-perfect, if at least one number in the pair is greater than or equal to m. Thus, the pairs (3, 3) and (0, 2) are 2-perfect while the pair (-1, 1) is not.

Two integers x, y are written on the blackboard. It is allowed to erase one of them and replace it with the sum of the numbers, (x + y).

What is the minimum number of such operations one has to perform in order to make the given pair of integers m-perfect?

Input

Single line of the input contains three integers x, y and m ( - 1018 ≤ x, y, m ≤ 1018).

Please, do not use the %lld specifier to read or write 64-bit integers in C++. It is preffered to use the cin, cout streams or the %I64d specifier.

Output

Print the minimum number of operations or "-1" (without quotes), if it is impossible to transform the given pair to the m-perfect one.

Examples

Input

1 2 5


Output

2


Input

-1 4 15


Output

4


Input

0 -1 5


Output

-1

Note

In the first sample the following sequence of operations is suitable: (1, 2) <image> (3, 2) <image> (5, 2).

In the second sample: (-1, 4) <image> (3, 4) <image> (7, 4) <image> (11, 4) <image> (15, 4).

Finally, in the third sample x, y cannot be made positive, hence there is no proper sequence of operations.
import java.util.*;
import java.io.*;
public class d2_188_C {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        long x=sc.nextLong(),y=sc.nextLong(),m=sc.nextLong();
        //boolean status=true;
        long count=0;
        long temp;
        if(x>y)
        {
            temp=x;
            x=y;
            y=temp;
        }
        if(y>=m)
        {
            System.out.println(0);
            System.exit(0);
        }
        if(y<=0)
        {
            System.out.println(-1);
            System.exit(0);
        }
        if(x<0)
        {
            long res=(-x)/y;
            count+=res;
            x+=res*y;
            //System.out.println("x="+x);
        }
        do
        {
            temp=x;
            x=y;
            y=temp+y;
            if(x>y)
            {
                temp=x;
                x=y;
                y=temp;
            }
            count++;
            
        }
        while(y<m);
        System.out.println(count);
        

//      
//      while(x<m || y<m)
//      {
//          
//          if(x<0 && y<0)
//          {
//              status=false;
//              break;
//              
//          }
//          if(x<y)
//              x=x+y;
//          else
//              y+=x;
//          //x+=y;
//          if((x+y)<x||(x+y)<y)
//          {
//              status=false;
//              break;
//          }
//          count++;
//      }
//      if(status)
//          System.out.println(count);
//      else
//          System.out.println(-1);

    }

}
