#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
const int inf = 1e9;
const double eps = 1e-8;
const double pi = acos(-1.0);
template <class T>
inline bool rd(T &ret) {
  char c;
  int sgn;
  if (c = getchar(), c == EOF) return 0;
  while (c != '-' && (c < '0' || c > '9')) c = getchar();
  sgn = (c == '-') ? -1 : 1;
  ret = (c == '-') ? 0 : (c - '0');
  while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
  ret *= sgn;
  return 1;
}
template <class T>
inline void pt(T x) {
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  if (x > 9) pt(x / 10);
  putchar(x % 10 + '0');
}
using namespace std;
const int N = 2e6 + 20;
long long x, y, m;
long long work() {
  if (max(x, y) >= m) return 0;
  if (max(x, y) <= 0) return -1;
  unsigned long long ans = 0;
  if (x > y) swap(x, y);
  if (x < 0) {
    ans = -x / y;
    x += y * ans;
    if (x < 0) x += y, ans++;
  }
  while (1) {
    if (y >= m) return ans;
    x += y;
    swap(x, y);
    ans++;
  }
}
int main() {
  rd(x);
  rd(y);
  rd(m);
  pt(work());
  return 0;
}
