Лексикограф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. Збільшіть, будь ласка, обмеження, або скажіть, що моє рішення не найефективніше:)
Бачу, розв'язок зайшов... Вітаю! Час буде збільшений лише для Пайтона
Дякую