M,N=[int(i) for i in input().split()] #分子をM 分母をNとして #(1) M<-M+N , N<-N #(2) M<-N, N<-M #互除法 def gcd(a, b): if b == 0: return a return gcd(b, a % b) g = gcd(M,N) N=int(N/g) M=int(M/g) #幅優先探索 queue=[] queue.append([1,1,0]) #分子, 分母, 回数 kaisuu_ans=-1 kaisuu_save=[[float("inf") for i in range(max(M,N)+1)] for j in range(max(M,N)+1)] while(len(queue)>0): tmp=queue.pop(0) bunsuu=tmp[0:2] bunsi=bunsuu[0] bunbo=bunsuu[1] kaisuu=tmp[2] kaisuu_save[bunsi][bunbo]=kaisuu # print(tmp) if bunsuu==[M,N]: kaisuu_ans=kaisuu break if bunsi+bunbokaisuu+1: queue.append([bunsi+bunbo,bunbo,kaisuu+1]) if kaisuu_save[bunbo][bunsi]>kaisuu+1: queue.append([bunbo,bunsi,kaisuu+1]) print(kaisuu_ans)