Лексикографiчний порядок часто називають алфавiтним порядком при роботi з рядками. Деякий рядок бiльший, нiж iнший, якщо вiн з’являється пiзнiше в списку, упорядкованому лексикографiчно.
Для даного рядка \(s\) створiть новий, переставивши деякi або всi його символи. Новий рядок має вiдповiдати наступним вимогам:
вiн повинен бути бiльшим за даний;
це повинно бути найменше слово, яке вiдповiдає першiй умовi.
Наприклад, для рядка ’abcd’ наступне бiльше слово буде ’abdc’.
Формат вхiдних даних
Перший рядок мiстить цiле число \(t\) \((1 \le t \le 10^5)\) - кiлькiсть тестiв.
Кожен тест мiститься в окремому рядку i мiстить слово \(s\) \((1 \le |s| \le 100)\), яке складається лише iз символiв дiапазону ’a’..’z’
Формат вихiдних даних
Для кожного тесту в окремому рядку виведiть шукане слово або , у випадку його вiдсутностi, виведiть ’no answer’.
Приклад вхідних даних
5
ab
bb
hefg
dhck
dkhc
Приклад вихідних даних
ba
no answer
hegf
dhkc
hcdk
Коментарі
O(t * |s| * log|s|) на C++ не заходить на 100 через TLE. Збільшіть, будь ласка, обмеження, або скажіть, що моє рішення не найефективніше:)
Бачу, розв'язок зайшов... Вітаю! Час буде збільшений лише для Пайтона
Дякую