Проверка на негласный палиндром

Негласный палиндром

Возьмем произвольное слово и проделаем с ним следующую операцию: поменяем местами его первую согласную букву с последней согласной буквой, вторую согласную букву с предпоследней согласной буквой и т.д. Если после этой операции мы вновь получим исходное слово, то будем называть такое слово негласным палиндромом. Например, слова sos, rare, rotor, gong, karaoke являются негласными палиндромами.

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

Вводится одно слово.

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

Программа должна вывести YES, если введенное слово является негласным палиндромом, и NO в противном случае.

Вот мой код.При некоторых значениях n, программа не завершается(продолжает висеть).Подскажите пожалуйста, как исправить?

n=input()
p=''
l=n[0]
h=n[-1]

n=n.replace('a','')
n=n.replace('e','')
n=n.replace('i','')
n=n.replace('o','')
n=n.replace('u','')
n=n.replace('y','')
while n!='':
    if n[0]==n[-1]:
        p='YES'
    else:
        print('NO')
        raise SystemExit
    n=n.replace(l,'')
    n=n.replace(h,'')
print(p)

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

Автор решения: MBo
result = "YES"
while len(n) > 1:
    if n[0]==n[-1]:
        n = n[1:-1]
    else:
        result = "NO"
        break
print(result)
→ Ссылка
Автор решения: CrazyElf
n = input()
n = n.replace('a','').replace('e','').replace('i','').replace('o','').replace('u','').replace('y','')
l = len(n) // 2
n1 = n[:l]
n2 = n[-1:-l-1:-1]
r = 'YES' if n1 == n2 else 'NO'
print(r)
  1. Читаем слово
  2. Удаляем из слова все гласные
  3. Делим получившееся слово пополам
  4. Вторую половину слова при этом переворачиваем задом наперёд
  5. Сравниваем первую половину со второй половиной
  6. PROFIT
→ Ссылка