409737: GYM103714 G Уязвимое хэширование
Description
Антон решил создать свою тестирующую систему, так как та, которая использовалась на соревнованиях в его школе, ему категорически не нравилась. И всё шло хорошо, пока не настал черёд подсистемы аутентификации пользователей.
Для реализации этой системы, ему нужно найти способ хэшировать пароли пользователей, так как реальные пароли в Базе Данных хранить нельзя.
Для хэширования какой-либо строки $$$s$$$, Антон решил использовать составной хэш - два числа: длина строки $$$n=|s|$$$, и сумма кодов символов $$$h=\sum_{i=1}^n ord(s_i)$$$. Однако в своей системе для использования в паролях он решил разрешить лишь строчные латинские буквы, для которых кодом будет являться их позиция в алфавите. Так, для строки $$$abacaba$$$, он запомнит числа $$$n=7$$$ и $$$h=11=1+2+1+3+1+2+1$$$.
Однако теперь его друг Марат, воспользовавшись информацией о том, как Антон спроектировал свою систему, хочет подобрать пароль-коллизию для того, чтобы незаметно проникать в систему с правами администратора.
Коллизией называется явление, при котором несколько различных по содержимому данных имеют одинаковое значение хэш-функции. Например, для строки $$$abacaba$$$ коллизией может являться строка $$$abbabba$$$, потому что их длины совпадают так же, как и их суммы кодов символов.
Марат уже завладел информацией о том, каким паролем пользуется Антон. Помогите ему найти коллизию
Входные данныеПервая строка входных данных содержит строку $$$s$$$ $$$(1 \le |s| \le 10^5)$$$, состоящую из строчных латинских букв — пароль, используемый Антоном для администрирования его тестирующей системы
Выходные данныеВ первой строке выведите число $$$h$$$, которое будет получено при хэшировании пароля Антона. Во второй строке выведите сгенерированный пароль-коллизию. В случае, если такого пароля не существует, оставьте вторую строку пустой
ПримерыВходные данныеadminВыходные данные
41 xcedeВходные данные
abacabaВыходные данные
11 abbabba