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.awt.Point;
import java.util.regex.*;
import java.io.*;
import java.math.BigInteger;
import java.util.*;
import java.util.Map.Entry;
import java.util.Random;

import static java.lang.Math.*;

public class Solve implements Runnable{
    
final boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE") != null;
    
    BufferedReader in;
    PrintWriter out;
    StringTokenizer tok = new StringTokenizer("");
    
    void init() throws FileNotFoundException{
        if (ONLINE_JUDGE){
            in = new BufferedReader(new InputStreamReader(System.in));
            out = new PrintWriter(System.out);
        }else{  
            in = new BufferedReader(new FileReader("input.txt"));
            out = new PrintWriter("output.txt");
           
        }
    }
    
    String readString() throws IOException{
        while(!tok.hasMoreTokens()){
            try{
                tok = new StringTokenizer(in.readLine());
            }catch (Exception e){
                return null;
            }
        }
        return tok.nextToken();
    }
    
    int readInt() throws IOException{
        return Integer.parseInt(readString());
    }
    
    long readLong() throws IOException{
        return Long.parseLong(readString());
    }
    
    double readDouble() throws IOException{
        return Double.parseDouble(readString());
    }
    
    public static void main(String[] args){
        new Thread(null, new Solve(), "", 256 * (1L << 20)).start();
    }
    
    long timeBegin, timeEnd;

    void time(){
        timeEnd = System.currentTimeMillis();
        System.err.println("Time = " + (timeEnd - timeBegin));
    }
    
    void debug(Object... objects){
        if (!ONLINE_JUDGE){
            for (Object o: objects){
                System.err.println(o.toString());
            }
        }
    }
    
    int sm(int x){
        if (x==1) return 0;else return 1;
    }
    
    static int gcd(int a,int b){
        if (b==0) return a;
        else{
            return gcd(b,a%b);
        }
    }
    
    
    
    
    
    public int cont(String st1,String st2) throws IOException{      
            
            String st3="1";
            if (st2.length()>1){
                st3+=st2.substring(1);
            }
            int count=0;
            int j=0;
            while (st1.indexOf(st2)>=0){
                j++;
                if (j>1000) break;
                st1=st1.replaceFirst(st2, st3);             
                count++;
            }
            return count;       
    }
    public int cont1(String st1,String st2) throws IOException{     
        int len=st1.length();
        String st3="";
        if (st2.length()>1){
            st3+=st2.substring(1);
        }
        st1=st1.replaceAll(st2, st3);
        int len1=st1.length();
        int count=len-len1;
        
        return count;       
}
    
    
   
   
    
    
    
    
    public void solve() throws IOException{
        long x=readLong();
        long y=readLong();
        long m=readLong();
        
        long min=Math.min(x, y);
        long max=Math.max(x, y);
        
        
        if (x>=m || y>=m){
            out.println(0);
            return;
        }
        
        if (x+y<=min){
            out.println(-1);
            return;
        }
        
        long ans=0;
        long[] dp=new long[1000000];
        if (min<0){
            long h=min+(Math.abs(min)/max)*max;
            ans+=(Math.abs(min)/max);
            if (Math.abs(min)%max!=0){
                h+=max;
                ans++;
            }   
            min=h;
        }
        
        
        
        dp[0]=min;
        dp[1]=max;
        
        
        int j=2;
        
        while(dp[j-1]<m){   
            if (dp[j-2]>dp[j-1]){
                long temp=(long)dp[j-1];
                dp[j-1]=dp[j-2];
                dp[j-2]=temp;
            }           
            
            dp[j]=(long)dp[j-1]+(long)dp[j-2]; 
            
            
            if (dp[j-1]>dp[j]){
                long temp=(long)dp[j];
                dp[j]=dp[j-1];
                dp[j-1]=temp;
            }           
            
            
            //out.println(dp[j]);
            j++;
            ans++;
        }
        out.println(ans);
       
        
        
        
        
        
        
        
       
           
       
       
    }
      
      
      
      
      
      
      
      
      
      
      
      
      
      
       
       
       
       
           
       
       
   
        
        
        
    
    
    public void run(){
        try{
            timeBegin = System.currentTimeMillis();         
            init();
            solve();
            out.close();
            time();
        }catch (Exception e){
            e.printStackTrace(System.err);
            System.exit(-1);
        }
    }
    
    
}