# -*- coding:utf-8 -*- def euclidean(n,m): while 1: if max(n,m) % min(n,m) == 0: return min(n,m) if n > m: n = n % m else: m = m % n if __name__ == "__main__": m,n = map(int,raw_input().split()) if m == n: print 0 exit() ans = 0 while euclidean(m,n) != 1: i = euclidean(m,n) m /= i n /= i while 1: if n > m: ans += 1 m,n = n,m elif m > n: if n == 1: ans += m -1 break ans += m / n + 1 m,n = n,m%n if m == n: break print ans