#include <bits/stdc++.h>
using namespace std;
int dump_char;
long long n, m;
void cal(long long a[2][2], long long b[2][2]) {
  long long c[2][2];
  c[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0];
  c[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1];
  c[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0];
  c[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1];
  a[0][0] = c[0][0];
  a[0][1] = c[0][1];
  a[1][0] = c[1][0];
  a[1][1] = c[1][1];
}
void cal_exp(long long e) {
  long long b[2][2] = {1, 1, 1, 0}, p[2][2] = {1, 0, 0, 1};
  while (e) {
    if (e % 2) {
      cal(p, b);
    }
    cal(b, b);
    e = e / 2;
  }
  n = p[0][0] + p[0][1];
  m = p[1][0] + p[1][1];
}
long long maxl(long long a, long long b) {
  if (a > b) return a;
  return b;
}
long long minl(long long a, long long b) {
  if (a > b) return b;
  return a;
}
int main() {
  long long count = 0;
  long long x, y, z, k;
  long long i, ans;
  cin >> x;
  cin >> y;
  cin >> k;
  z = maxl(x, y);
  y = minl(x, y);
  x = z;
  if (x < k && x <= 0) {
    cout << "-1" << endl;
    return 0;
  }
  if (x >= k) {
    cout << count << endl;
    return 0;
  }
  if (x > 0 && y < 0) {
    z = (-1ll * y) / x;
    z++;
    count = z;
    y = y + z * x;
    z = maxl(x, y);
    y = minl(x, y);
    x = z;
  }
  for (i = 0; i < 1000; i++) {
    count++;
    cal_exp(i);
    ans = n * x + m * y;
    if (ans >= k) break;
  }
  cout << count << endl;
  return 0;
}
