/*
TASK:minjumps
LANG:C++
*/

#include <iostream>
#include <queue>
using namespace std;

struct state { int coord,dist; state(int c, int d) { coord=c; dist=d; } };

int main()
{
 int a,b,n,ans=-1; cin>>a>>b>>n;
 queue <state> work; state beg(0,0); work.push(beg);
 bool used[20001]; memset(used,false,sizeof(used)); used[10000]=true;
 while (!work.empty())
 {
  state cur=work.front(); work.pop(); if (cur.coord==n) { ans=cur.dist; break; }
  state ra(cur.coord+a,cur.dist+1); 
  if (!used[cur.coord+a+10000] &&
       abs(cur.coord+a)<=10000 ) { used[cur.coord+a+10000]=true; work.push(ra); }
  state rb(cur.coord+b,cur.dist+1); 
  if (!used[cur.coord+b+10000] &&
       abs(cur.coord+b)<=10000 ) { used[cur.coord+b+10000]=true; work.push(rb); }
  state la(cur.coord-a,cur.dist+1); 
  if (!used[cur.coord-a+10000] &&
       abs(cur.coord-a)<=10000 ) { used[cur.coord-a+10000]=true; work.push(la); }
  state lb(cur.coord-b,cur.dist+1); 
  if (!used[cur.coord-b+10000] &&
       abs(cur.coord-b)<=10000 ) { used[cur.coord-b+10000]=true; work.push(lb); }
 }
 cout<<ans<<endl;
 return 0;
}
