#include <bits/stdc++.h>
using namespace std;
long long func(long long n, long long x, long long y) {
  long long ans[2][2] = {1, 0, 0, 1};
  long long a[2][2] = {1, 1, 1, 0};
  long long b[2][2] = {0}, ret = 0;
  int i, j, k;
  while (n > 0) {
    if ((n & 1) == 1) {
      for (i = 0; i < 2; i++)
        for (j = 0; j < 2; j++) b[i][j] = ans[i][j];
      for (i = 0; i < 2; i++)
        for (j = 0; j < 2; j++) {
          ans[i][j] = 0;
          for (k = 0; k < 2; k++) ans[i][j] = ans[i][j] + a[i][k] * b[k][j];
          ans[i][j] = ans[i][j] % 1000000007ll;
        }
    }
    for (i = 0; i < 2; i++)
      for (j = 0; j < 2; j++) {
        b[i][j] = 0;
        for (k = 0; k < 2; k++) b[i][j] = b[i][j] + a[i][k] * a[k][j];
        b[i][j] = b[i][j] % 1000000007ll;
      }
    for (i = 0; i < 2; i++)
      for (j = 0; j < 2; j++) a[i][j] = b[i][j];
    n = n / 2;
  }
  ret = x * ans[0][0] + y * ans[0][1];
  ret = ret % 1000000007ll;
  return ret;
}
int main() {
  long long x, y, n, m, i, j, k;
  scanf("%I64d", &x);
  scanf("%I64d", &y);
  scanf("%I64d", &m);
  if (x >= m || y >= m) {
    printf("0");
    return 0;
  }
  if (x <= 0 && y <= 0) {
    printf("-1");
    return 0;
  }
  long long ans = 0;
  if (x > y) swap(x, y);
  if (x < 0) {
    long long num = (abs(x) + y - 1) / y;
    ans = num;
    x = x + num * y;
  }
  while (x < m && y < m) {
    ans++;
    if (x > y) swap(x, y);
    x = x + y;
  }
  printf("%I64d\n", ans);
  return 0;
}
