Submit solution


Очки: 150
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem types
Allowed languages
C++, Python

Связист армейского полка работает с депешами, используя классический шифр Виженера.

Для работы берётся ключ — короткое слово из строчных латинских букв. При шифровании каждая буква депеши сдвигается по английскому алфавиту вперёд на величину, равную позиции соответствующей буквы ключа: a даёт сдвиг 0, b1, ..., z25. Если ключ короче текста депеши, он повторяется циклически.

Сдвиг применяется только к буквам английского алфавита. Регистр букв должен сохраняться. Все остальные символы — пробелы, цифры, знаки препинания и другие печатные ASCII-символы — передаются без изменений и не учитываются при продвижении по ключу: позиция в ключе увеличивается только при обработке очередной буквы.

При расшифровке выполняется обратная операция: каждая буква сдвигается назад на величину, заданную соответствующей буквой ключа.

Требуется по заданному режиму работы, ключу и тексту депеши вывести результат шифрования или расшифровки.

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

В первой строке задан режим работы: E — зашифровать депешу, D — расшифровать депешу.

Во второй строке задан ключ key — непустая строка длиной от 1 до 100, состоящая из строчных латинских букв.

В третьей строке задан текст депеши text длиной от 1 до 10^5, состоящий из печатных ASCII-символов.

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

Выведите результат обработки — зашифрованный или расшифрованный текст той же длины, что и text.

Ограничения

  • mode — один символ: E или D
  • 1 <= |key| <= 100
  • 1 <= |text| <= 10^5
  • key состоит только из строчных латинских букв
  • text состоит только из печатных ASCII-символов

Примеры

Пример 1

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

E
b
Abc XYZ!

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

Bcd YZA!
Пример 2

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

D
az
a-B Z,9

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

a-C Z,9

Комментарии

Еще нет ни одного комментария.