# なんかユークリッドの互除法っぽい動きに見える # とりあえず逆順にしてみるか # 分子の方を大きくして、引ける数分だけ引く # 分母の方が大きくなったら反転して引けるだけ引く # の繰り返しが速いのでは # この手の問題は両数が互いに素でないとき、倍数のとき、同じとき、などに注意 # 本問でできない、-1はないはず from math import gcd M, N = map(int, input().split()) count = 0 while True: g = gcd(M, N) M //= g N //= g #print('M', M, 'N', N, 'count', count) if (M, N) == (1, 1): break if N == 1: temp = M//N-1 (M, N) = (M - temp*N, N) count += temp elif M < N: (M, N) = (N, M) count += 1 else: temp = M//N (M, N) = (M-temp*N, N) count += temp print(count)