Тренируюсь на задачах, но проверяющая программа не засчитывает ответ

Яша плавал в бассейне размером N×M метров и устал. В этот момент он обнаружил, что находится на расстоянии x метров от одного из длинных бортиков (не обязательно от ближайшего) и y метров от одного из коротких бортиков. Какое минимальное расстояние должен проплыть Яша, чтобы выбраться из бассейна на бортик?

Входные данные:

Программа получает на вход целые числа

Программа должна вывести число метров, которое нужно проплыть Яше до бортика.

Мой код:

N = int(input())
M = int(input())
x = int(input())
y = int(input())

n = N - x
m = M - y

if (n <= x) and (n <= y) and (n <= m):
    print(n)

if (x <= n) and (x <= y) and (x <= m):
    print(x)

if (m <= x) and (m <= y) and (m <= y):
    print(m)

if (y <= x) and (y <= n) and (y <= m):
    print(y)

Ответы (2 шт):

Автор решения: eri

NxM может быть 20x10 и 10x20 . нужно поменять N и M местами если N>M, чтоб x сравнивался с коротким расстоянием.

if N>M: N,M = M,N
→ Ссылка
Автор решения: Wairua

На pythontutor проверил, все работает (задача оттуда)

N = int(input())
M = int(input())
x = int(input())
y = int(input())

length = max(N, M)
width = min(N, M)

short_length = min(width - x, width - (width - x))
short_width = min(length - y, length - (length - y))

response = min(short_length, short_width)
print(response)

Для любителей поплотнее )))

N, M, x, y = [int(input()) for _ in range(4)]

print(
    min(
        min(max(N, M) - y, max(N, M) - (max(N, M) - y)),
        min(min(N, M) - x, min(N, M) - (min(N, M) - x))
    )
)

Решение разработчиков

→ Ссылка