#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:200000000")
using namespace std;
const long long oo = 1LL << 60;
const long long kNumMoves = 4;
const long long kMoves[kNumMoves][2] = {{1, 0}, {-1, 0}, {0, -1}, {0, 1}};
long long GetMinMoves(long long x, long long y, long long m) {
  if (max(x, y) >= m) return 0;
  if ((x + y) <= min(x, y)) return -1;
  if (x < y) swap(x, y);
  long long cnt = 0;
  if (y < 0) {
    cnt = (-y / x);
    y += cnt * x;
  }
  if (x < y) swap(x, y);
  while (max(x, y) < m) {
    long long sum = x + y;
    long long mx = max(x, y);
    x = (sum < mx) ? mx : sum;
    y = (x == sum) ? mx : sum;
    ++cnt;
  }
  return cnt;
}
int main() {
  long long x, y, m;
  cin >> x >> y >> m;
  cout << GetMinMoves(x, y, m) << endl;
  int i;
  cin >> i;
  return 0;
}
