Ваш друг не слишком хорошо разбирается в компьютерах, так что в качестве практической шутки кто-то написал буквы (az) на своей клавиатуре. Когда он сел и попытался набрать свое имя, глядя на клавиатуру, он понял, что буквы зашифрованы и попросил вашей помощи.
Вы умны, так что вы знаете, что если он напечатает свое имя, а затем повторно напечатает то, что появляется на экране вместо своего имени, он в конечном итоге преуспеет, введя свое имя. Вы также любезны и переставляете ключи, но хотите знать, сколько ходов потребуется, чтобы добиться успеха.
Ваша задача - написать программу или функцию, которая при перемешивании букв и имени друга вычисляет количество ходов.
Входные данные:
- В качестве входных данных приводятся две строки в структуре, удобной для вашего языка.
- Первая строка - это список новых строчных букв в алфавитном порядке старых. (Первый символ - это тот, который находится в позиции
a
, последний - в позицииz
.) В строке всегда будут происходить некоторые изменения. - Вторая строка - это имя. Он может содержать любой печатный символ ascii, но перетасовываются только прописные и строчные буквы алфавита, если таковые имеются. Само имя не может быть перетасовано в al.
Выходные данные:
- Выходное значение представляет собой одно целое число, минимально необходимое число витков. Новая строка необязательна.
Примеры:
Ввод:
'abcfdeghijklmnopqrstuvwxyz' 'Mr. John Doe'
(d, e, f позиции изменены)
Вывод:
3
(Показанные имена: Mr. John Fod
=> Mr. John Eof
=> Mr. John Doe
)
Вход:
'nopqrstuvwxyzabcdefghijklm' 'Mr. John Doe'
( шифр ROT13 )
Вывод:
2
(Любое входное имя, содержащее буквы, будет 2
обходиться, чтобы создать оригинальное имя.)
Входные данные:
'aebcdjfghiqklmnopzrstuvwxy' 'John Doe'
Выход:
140
Это код-гольф, поэтому выигрывает самый короткий вход.
EOF
совершенно потрясающий!
aebcdjfghiqklmnopzrstuvwxy
(вывод 1260 дляMr John Doe
). Это максимально возможное значение - оно состоит из циклов порядка 4, 5, 7, 9 (и без измененийa
), и каждое имя, которое содержит хотя бы одну букву из каждого цикла, даст 1260. И я предполагаю, что в качестве входных данных взят сам алфавит или использование незатронутого имени также являются важными крайними случаями.