Method 1 sometimes gives wrong solution because it has a bug: > def solution(X, Y, D): > if (X == Y): > jumps = 0 > elif Y-X % D == 0: > jumps = (Y-X)/D > else: > jumps = ((Y-X)/D) + 1 > return jumps In the `elif` there, `Y-X` should have been within brackets, because `%` has higher precedence than `-` operator. In other words, `Y - X % D` is not the same as `(Y - X) % D`. Other than that, they are practically equivalent. I would clean up the formatting and remove some obvious temporary variables, like this: def solution(X, Y, D): jumps = (Y - X) / D if (Y - X) % D > 0: return jumps + 1 return jumps