/*
TASK:minjumps
LANG:C++
*/
#include <iostream.h>
	int o[10001];
	long br,br1,a,b,c,n,x,y,z,m;
long nod(long a, long b)
{
 while(a!=0 && b!=0)
 {
  if(a>b) a%=b;
   else b%=a;
 }
 if(a!=0) return a;
  else return b;
}
long nok(long a, long b)
{
 long x;
 x=nod(a,b);
 return (a/x)*b;
}
int main ()
{
cin>>a>>b>>n;
if(a>b)
{
 c=a;
 a=b;
 b=c;
}
if(n<0) n=-n;
x=nok(a,b);
if(x>n) x=n;
 else
 {
  m=n/x;
  n=n%x;
 }
y=b-a;
o[a]=1;
o[b]=1;
if(o[y]==0) o[y]=2;
for(br=b+b; br<=x; br+=b) o[br]=o[br-b]+1;
for(br=a+a; br<=x; br+=b) if(o[br]==0) o[br]=o[br-a]+1;
if(o[n]==0)
{
 for(br=1; br<=x; br++)
 if(o[br]!=0)
 {
  z=o[br];
  for(br1=br; br1<=x; br1+=y)
  {
   if(o[br1]>z || o[br1]==0) o[br1]=z;
   z+=2;
  }
 }
 if(o[n]!=0) cout<<o[x]*m+o[n]<<endl;
  else cout<<-1<<endl;
}
else cout<<o[n]<<endl;
return 0;
}