def min_moves_to_goal(Gx, Gy): # 원점에서 (Gx, Gy)로 가는 최소 이동 횟수 # 이미 원점에 있을 경우 if Gx == 0 and Gy == 0: return 0 # 루크로 이동할 경우: if Gx == Gy: # (1, 1) 같은 경우 return 1 # 루크는 한 번에 갈 수 있음 # 루크의 경우 수평 또는 수직으로 이동 가능 if Gx == 0 or Gy == 0: return 1 # 한 번에 수평 또는 수직으로 이동 가능 # 비숍으로 이동할 경우: if (Gx + Gy) % 2 == 0: return 2 # 대각선으로 한 번에 갈 수 있음 return 2 # 비숍으로는 불가능하지만 2번으로 해결 가능 # 입력 받기 Gx, Gy = map(int, input().split()) # 결과 출력 print(min_moves_to_goal(Gx, Gy))