#include<bits/stdc++.h>usingnamespace std;//#define Fread//#define Getmod#ifdefFreadchar buf[1<<21],*iS,*iT;#definegc()(iS == iT ?(iT =(iS = buf)+fread(buf,1,1<<21,stdin),(iS == iT ?EOF:*iS ++)):*iS ++)#definegetchargc#endif// Freadtemplate<typenameT>voidr1(T &x){
x =0;charc(getchar());intf(1);for(; c <'0'|| c >'9'; c =getchar())if(c =='-') f =-1;for(;'0'<= c && c <='9';c =getchar()) x =(x *10)+(c ^48);
x *= f;}#ifdefGetmodconstint mod =1e9+7;template<int mod>structtypemod{int z;typemod(int a =0):z(a){}inlineintinc(int a,int b)const{return a += b - mod, a +((a >>31)& mod);}inlineintdec(int a,int b)const{return a -= b, a +((a >>31)& mod);}inlineintmul(int a,int b)const{return1ll* a * b % mod;}
typemod<mod>operator+(const typemod<mod>&x)const{returntypemod(inc(z, x.z));}
typemod<mod>operator-(const typemod<mod>&x)const{returntypemod(dec(z, x.z));}
typemod<mod>operator*(const typemod<mod>&x)const{returntypemod(mul(z, x.z));}
typemod<mod>&operator+=(const typemod<mod>&x){*this=*this+ x;return*this;}
typemod<mod>&operator-=(const typemod<mod>&x){*this=*this- x;return*this;}
typemod<mod>&operator*=(const typemod<mod>&x){*this=*this* x;return*this;}intoperator==(const typemod<mod>&x)const{return x.z == z;}intoperator!=(const typemod<mod>&x)const{return x.z != z;}};typedef typemod<mod> Tm;#endiftemplate<typenameT,typename... Args>inlinevoidr1(T& t, Args&... args){r1(t);r1(args...);}#defineintlonglongconstint maxn =2e5+5;constint maxm = maxn <<1;intksm(int x,int mi,int mod){intres(1);if(mi ==1)return1% mod;while(mi){if(mi &1) res = res * x % mod;
mi >>=1;
x = x * x % mod;}return res;}intexgcd(int a,int b,int&x,int&y){if(!b)return x =1, y =0, a;int d =exgcd(b, a % b, y, x);
y -= a / b * x;return d;}intexbsgs(int a,int b,int mod){static map<int,int> mp; mp.clear();
a %= mod, b %= mod;if(b ==1|| mod ==1)return0;// case 1intax(1),ct(0), x, y;for(int gd; gd =exgcd(a, mod, x, y), gd !=1;){if(b % gd)return-1;// case 2
b /= gd, mod /= gd;++ ct;
ax = ax *(a / gd)% mod;if(ax == b)return ct;}exgcd(ax, mod, x, y),void();// case 3int inv =(x % mod + mod)% mod;
b = b * inv % mod;int m =sqrt(mod)+1;for(int i =0,now(b); i < m;++ i, now = now * a % mod){
mp[now]= i;}
a =ksm(a, m, mod);if(!a)return b ==0?1+ ct :-1;//case 4for(int i =0,now(1); i <= m;++ i, now = now * a % mod){if(!mp.count(now))continue;int j = mp[now];if(i * m - j >=0)return i * m - j + ct;}return-1;}signedmain(){// freopen("S.in", "r", stdin);// freopen("S.out", "w", stdout);int a, b, p;while(scanf("%lld%lld%lld",&a,&p,&b)!=EOF){if(b >= p){puts("Orz,I can’t find D!");continue;}int ans =exbsgs(a, b, p);if(ans ==-1)puts("Orz,I can’t find D!");elseprintf("%lld\n", ans);}return0;}