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.
def mul(a, b):
    assert len(a[0]) == len(b)
    c = [[0 for j in range(len(b[0]))] for i in range(len(a))]
    for i in range(len(a)):
        for j in range(len(b[0])):
            for k in range(len(a[0])):
                c[i][j] += a[i][k] * b[k][j]
    return c

def exp(m, n):
    if n == 1:
        return m
    if n % 2 == 0:
        t = exp(m, n / 2)
        return mul(t, t)
    else:
        t = exp(m, n // 2)
        return mul(mul(t, t), m)

x, y, q = map(int, input().split())

m = [
    [0, 1],
    [1, 1]
]

v = [
    [x],
    [y]
]

upper = 1
lower = 1
while True:
    t = mul(exp(m, upper), v)
    if t[1][0] >= q or (t[0][0] <= 0 and t[1][0] <= 0):
        break
    upper *= 2
    lower = upper
upper

if t[0][0] <= 0 and t[1][0] <= 0:
    print('-1')
else:
    while lower < upper:
        mid = (upper + lower) // 2
        if mul(exp(m, mid), v)[1][0] < q:
            lower = mid + 1
        else:
            upper = mid

    assert lower == upper
    print(lower)