Стало известно, что противник шифрует текст следующим образом. Сначала определяется количество букв в самом длинном слове, его длину обозначим k (словом называется непрерывная последовательность английских букв, слова друг от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Затем каждая английская буква заменяется на букву, стоящую в алфавите на k букв позже (алфавит считается циклическим, то есть после буквы Z стоит буква A). Другие символы остаются неизменными. Строчные буквы при этом остаются строчными, а заглавные — заглавными. Расшифруйте найденную шифровку.
Входные данные
На вход программе подается текст шифровки, состоящей не более чем из 250 символов.
Выходные данные
Выведите исходный текст.
Примеры
Ввод
a a a a a a a a a a a a a a a a a a a a a aa a a a a a a a a a a a a amama a a a aa a a a a a a a a a a a a a a a a a a aa a a a aa a a a a aa aa a aa a a a a a a a a a aa a a a a a a a a a a a a a a a aa a a a a a a a a a a a a a a a a a a a a a a a .
Вывод
f f f f f f f f f f f f f f f f f f f f f ff f f f f f f f f f f f f frfrf f f f ff f f f f f f f f f f f f f f f f f f ff f f f ff f f f f ff ff f ff f f f f f f f f f ff f f f f f f f f f f f f f f f ff f f f f f f f f f f f f f f f f f f f f f f f .
Ввод
Zb Ra Ca Dab Ra.
Вывод
Ce Ud Fd Gde Ud.
Моя попытка решить
import re def shift(k): def closure(c): if c.isupper(): return chr((ord(c) - ord("A") + k) % 26 + ord("A")) elif c.islower(): return chr((ord(c) - ord("a") + k) % 26 + ord("a")) else: return c return closure def decode(s, k): return "".join(map(shift(k), s)) def main(): s = input() words = re.split(r"\W", s) k = max(map(len, words)) print(decode(s, k)) if __name__ == "__main__": main()
Компилятор пропускает, но проверщик говорит что "Программа выдаёт неверный ответ"
Очень прошу вас помочь…