def min_moves_to_goal(Gx, Gy): # 루크의 경우: 수평 또는 수직으로 이동 if Gx == 0 and Gy == 0: return 0 # 이미 원점에 있을 경우 elif Gx == 0 or Gy == 0: return 1 # 수평 또는 수직으로 한 번에 이동 가능 else: # 루크로는 최소 2번의 이동이 필요 # 비숍의 경우: 대각선 관계가 맞는지 확인 if (Gx - Gy) % 2 == 0: return 2 # 대각선으로 이동 가능 else: return 3 # 대각선으로는 이동 불가능하고, 비숍으로는 3번이 필요 # 입력 받기 Gx, Gy = map(int, input().split()) # 결과 출력 print(min_moves_to_goal(Gx, Gy))