| Demidov Open IT Cup 2025 |
|---|
| Закончено |
Пытаясь зайти в личный онлайн-кабинет Т-Банка, люди нередко делают ошибки при наборе пароля. Это может стать большой проблемой, так как от пользователей требуется придумать довольно длинные пароли (как мы знаем, чем больше символов в пароле, тем больше вероятность совершить ошибку при его наборе). Любители техники слепой печати склонны совершать серьёзные ошибки, если одна из рук не находится в правильном положении при печати, поскольку печатающие не смотрят на клавиатуру во время печати. Это может привести к тому, что все символы, набранные неправильно расположенной рукой, будут на одну клавишу дальше. Например, на $$$QWERTY$$$-клавиатуре «you» превратится в «upi», если правая рука будет размещена на одну клавишу правее обычного исходного положения.
Т-банк решил внедрить новый алгоритм проверки паролей, который учитывает некоторые распространенные ошибки (но не все), допускаемые людьми при вводе паролей на $$$QWERTY$$$-клавиатуре (см. рисунок ниже).

Красной линией разделены клавиши, левая половина клавиш нажимается только левой рукой при слепом наборе, правая – правой рукой соответственно.
Эффект нажатия Caps Lock ограничен буквенными символами и переключает действие клавиши Shift относительно этих символов. Другими словами, когда Caps Lock не нажат, все буквы печатаются как строчные, если только не нажата одна или обе клавиши Shift. Противоположное поведение происходит, когда включен Caps Lock – по умолчанию печатаются заглавные буквы, если только не нажата одна или обе клавиши Shift, что приводит к получению строчных букв. Разработчики алгоритма предполагают, что состояние клавиши Caps Lock не переключается во время ввода пароля.
Алгоритм, разработанный специалистами Т-Банка, ищет отклонения от правильной последовательности нажатий клавиш. Например, если правильный пароль — «BYt*», правильная последовательность, используя клавиатуру, указанную выше, – Shift+b, Shift+y, t, Shift+8. Если пользователь случайно нажал клавишу Caps Lock перед вводом пароля, но затем использовал правильную последовательность нажатий клавиш, он в конечном итоге набрал бы «byT*».
Т-Банк решил разрешить определенные отклонения или комбинации отклонений от правильной последовательности, которые описаны в таблице ниже. Допускается максимум одна из ошибок 1, 2, 3 и 4 типов, но любая из них может возникнуть в сочетании с ошибкой 5 типа.
Напишите программу, которая проверит по заданному алгоритму, корректно ли пользователь ввёл пароль.
В первой строке содержится строка $$$S$$$ ($$$2 \le |S| \le 24$$$, |S| – длина строки) – придуманный пользователем пароль. Во второй строке содержится число $$$N$$$ $$$(1 \le N \le 1000)$$$ – количество последовательностей, которые требуется проверить. В следующих $$$N$$$ строках содержатся потенциальные пароли $$$p_i$$$ $$$(|S| - 1 \le |p_i| \le |S| + 1)$$$. Пароль $$$S$$$ и $$$p_i$$$ могут содержать любой из символов, расположенных на латинской $$$QWERTY$$$-клавиатуре (см. рисунок выше).
Выведите $$$N$$$ строк. Если последовательность $$$a_i$$$ может быть паролем по указанным правилам, выведите YES, в противном случае выведите NO.
Password=`A:' 9 Password=`A:' pASSWORD=`a:' Psddeotf=1S:' oASSWIRD-`al; Password=`A:'x pASWORD=`a:' pASSWORD=`a:'X Osddeitf-1SL; Psdeotf=1S:'
YES YES YES YES YES YES YES NO NO
| Название |
|---|


