
#include <stdio.h>

#define MAX_TRANSFORMACIJA 12

int broj_a,broj_b,broj_c;
int trazeni_broj;
int nasao_rjesenje;
int rjesenje;

void ucitaj_podatke(void)
{
  FILE *fp;

  fp = fopen("ABC.IN","rt");

  fscanf(fp,"%d%d%d",&broj_a,&broj_b,&broj_c);

  fclose(fp);
}

int nzd(int a,int b) // najveci zajednicki djelitelj dva broja
                     // Euklidov algoritam - rekurzivna verzija
{
  return b ? nzd(b,a % b) : a;
}

void radi(long a,long b,int broj_transformacija,int zadnja_transformacija)
{
  int i;
  long novi_a,novi_b;

  if (nasao_rjesenje)
    return;

  if (broj_transformacija == trazeni_broj)
  {
    if (a == broj_c || b == broj_c)
      nasao_rjesenje = 1;

    return;
  }

  for (i = 1;i <= 4;++i)
  {
    if (i == zadnja_transformacija && (i == 1 || i == 2))
      continue;

    novi_a = a;
    novi_b = b;

    switch (i)
    {
      case 1 : novi_a = -novi_a;
               break;
      case 2 : novi_b = -novi_b;
               break;
      case 3 : novi_a += novi_b;
               break;
      case 4 : novi_b += novi_a;
               break;
    }

    radi(novi_a,novi_b,broj_transformacija + 1,i);

    if (nasao_rjesenje)
      break;
  }

}

void rijesi(void)
{
  int i;

  rjesenje = -1;

  if (!(broj_c % nzd(broj_a,broj_b))) // da li je broj_c visekratnik od
                                      // nzd(broj_a,broj_b) ?
    for (i = 1;i <= MAX_TRANSFORMACIJA;++i)
    {
      trazeni_broj = i;
      nasao_rjesenje = 0;

      radi(broj_a,broj_b,0,0);

      if (nasao_rjesenje)
      {
        rjesenje = i;
        break;
      }
    }
}

void zapisi_rjesenje(void)
{
  FILE *fp;

  fp = fopen("ABC.OUT","wt");

  fprintf(fp,"%d\n",rjesenje);

  fclose(fp);
}

int main(void)
{
  ucitaj_podatke();
  rijesi();
  zapisi_rjesenje();

  return 0;
}
