#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long #define FOR(i,a,b) for(int i= (a); i<((int)b); ++i) #define RFOR(i,a) for(int i=(a); i >= 0; --i) #define FOE(i,a) for(auto i : a) #define ALL(c) (c).begin(), (c).end() #define RALL(c) (c).rbegin(), (c).rend() #define DUMP(x) cerr << #x << " = " << (x) << endl; #define SUM(x) std::accumulate(ALL(x), 0LL) #define EPS 1e-14 using namespace std; // aとbの最大公約数 int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int main(int argc, char *argv[]) { int M, N; cin >> M >> N; int g = gcd(M, N); M /= g; N /= g; int ans = 0; while (M > 1 || N > 1) { if (M >= N) { M -= N; } else { swap(M, N); } ans++; } cout << ((M == 1 && N == 1) ? ans : -1) << endl; return 0; }