eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Ізоморфізми

Ізоморфізми

Два рядки \textbf{s} та \textbf{t} називаються ізоморфними, якщо можна так перепозначити усі букви першого рядка, щоб отримати другий. Звичайно ж, різні букви повинні бути перепозначені різними буквами, а однакові - однаковыми. Наприклад, рядки "\textbf{aba}" та "\textbf{сас}" ізоморфні. Відповідне перепозначення: позначимо букву '\textbf{a}' буквою '\textbf{c}', а букву '\textbf{b}' буквою '\textbf{a}'. А рядки "\textbf{xy}" та "\textbf{xx}" не ізоморфні. Вам задано рядок \textbf{s}. Введемо функцію \textbf{f(t)} (\textbf{t} - непорожній рядок), який дорівнює кількості підрядків рядка \textbf{s}, ізоморфних \textbf{t}, помножити на довжину рядка \textbf{t}. Ваша задача знайти рядок \textbf{t}, який складається з маленьких латинських букв, такий, що значення \textbf{f(t)} максимально можливе. \InputFile У першому рядку записано рядок \textbf{s} (\textbf{1} ≤ \textbf{|s|} ≤ \textbf{2000}), рядок складається з маленьких латинських букв. \OutputFile Виведіть оптимальний рядок \textbf{t}, якщо таких декілька, виведіть довільний. Виведений рядок повинен складатись з маленьких латинських букв.
Ліміт часу 2 секунди
Ліміт використання пам'яті 512 MiB
Вхідні дані #1
abacabadabacaba
Вихідні дані #1
acaba
Автор Геральд Агапов
Джерело Літня школа Севастополь 2013, Хвиля 1, День 6