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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;

import static java.lang.Math.*;

public class Main extends Thread{
	
	
	public static void main(String... args)throws IOException {		
		new Main().start();
		
	}
	
	long a,b,m,ans=0,c;
		
	public void run() {
		MyReader in = new MyReader(new InputStreamReader(System.in));
		PrintWriter out = new PrintWriter(System.out);		
		
		 a=in.nextLong(); b=in.nextLong(); m=in.nextLong();
		 
		  if(a>=m||b>=m){
			  out.print(0);
		  } else if(a<=0&&b<=0){
			  out.print(-1);
		  } else {
			  if(a>b){
				  long temp=a;
				  a=b;
				  b=temp;
			  }
			  if(a<0){
				  ans-=a/b;
				  a=-((-a)%b);
			  }
			if(a<0){  
				ans++;
				a=a+b;
			}
			if(a>b){
				  long temp=a;
				  a=b;
				  b=temp;
			  }
			 do{ 
			  c=b;
			   b=a+b;
			   a=c;
			  ans++; 
			 }while(b<m);
			 out.print(ans);
		  }
		  
	  in.close(); out.close(); 
	}
	
	
	
	private class MyReader extends BufferedReader{

	  private StringTokenizer t;	
		
		public MyReader(InputStreamReader in) {
			super(in);
		
		}
		
		int nextInt(){
			return Integer.parseInt(nextString());
		}
		
		long nextLong(){
			return Long.parseLong(nextString());
		}
		
		double nextDouble(){
			return Double.parseDouble(nextString());
		}
		
		String nextString(){
		  String out = "";	
			while(t==null||!t.hasMoreTokens()){
				try {
					t = new StringTokenizer(this.readLine());
				} catch (IOException e){
					e.printStackTrace();
				}
			}
			
		  out=t.nextToken();
		  
		return out;	
		}
		
		@Override 
		public void close(){
			try{
				super.close();
			} catch (IOException e){
				e.printStackTrace();
			}
		}
		
	}

}
