m=2n=1ifm<n:m,n=n,mhorse=[(1,2),(2,1),(-1,2),(-2,1),(-2,-1),(-1,-2),(1,-2),(2,-1)]queue=[(0,0)]goal={(0,0):0}whilequeue!=[]:base=queue.pop(0)foriteminhorse:arrow=((item[0]+base[0]),(item[1]+base[1]))if0<=arrow[0]<=mand0<=arrow[1]<=nand(notarrowingoal):goal[arrow]=goal[base]+1# how many stepsqueue.append(arrow)ifarrow==(m,n):breakif(m,n)ingoal:printgoal[(m,n)]else:print-1printgoal