Задачі
Ізоморфізми
Ізоморфізми
Два рядки \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}, якщо таких декілька, виведіть довільний. Виведений рядок повинен складатись з маленьких латинських букв.
Вхідні дані #1
abacabadabacaba
Вихідні дані #1
acaba