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?
Single line of the input contains three integers *x*, *y* and *m* ( - 10<sup class="upper-index">18</sup> ≤ *x*, *y*, *m* ≤ 10<sup class="upper-index">18</sup>).

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.
#If you win, you live. You cannot win unless you fight.
# remember hash hack use tuple
import string
from sys import  stdin,setrecursionlimit
input=stdin.readline
rd=lambda: map(lambda s: int(s), input().strip().split())
rdG=lambda: map(lambda s: int(s)-1, input().strip().split())
ri=lambda: int(input())
rs=lambda :input().strip()
setrecursionlimit(10**5)
from collections import defaultdict,deque,Counter
from bisect import bisect_left as bl, bisect_right as br
from math import gcd, ceil, floor,log2,factorial
from  copy import  deepcopy

x,y,m=rd()
if max(x,y)>=m:
    print(0)
    exit()
if x<=0 and y<=0:
    print(-1)
    exit()
cst=0
if min(x,y)<0:
    tx=max(x,y)
    ty=min(x,y)
    res=ceil((0-ty)/tx)
    cst=res
    ty+=res*tx
    y=ty
    x=tx

q=[(min(x,y),max(x,y),cst)]
# print(q)

while q:
    # print(q)
    a,b,c=q.pop(0)
    s=(a+b)
    # print(s>a)
    if s>=m:
        print(c+1)
        exit()
    if b>=s and s>a:
        q.append((s,b,c+1))
    elif s>b :
        q.append((b,s,c+1))
    else:
        break
print(-1)
