Задана строка $$$s$$$, состоящая из $$$n$$$ символов. Эти символы являются первыми $$$k$$$ строчными буквами латинского алфавита. Вам необходимо выполнить $$$n$$$ операций со строкой.
Во время $$$i$$$-й операции вы берете символ, который первоначально занимал $$$i$$$-ю позицию, и выполняете с ним одно из следующих действий:
Пусть начальная строка — test, $$$k = 20$$$, а последовательность операций — URLD. Тогда строка изменяется следующим образом:
Результатом выполнения последовательности операций является saes.
Для заданной строки $$$s$$$ и значения $$$k$$$ найдите лексикографически минимальную строку, которая может быть получена после применения последовательности операций к $$$s$$$.
Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных.
Каждый набор состоит из двух строк. Первая строка содержит два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n \le 500$$$; $$$2 \le k \le 26$$$).
Вторая строка содержит строку $$$s$$$, состоящую из $$$n$$$ символов. Каждый символ — это одна из первых $$$k$$$ букв латинского алфавита (в нижнем регистре).
Для каждого набора входных данных выведите одну строку, содержащую лексикографически минимальную строку, которая может быть получена из $$$s$$$ с помощью одной последовательности операций.
6 4 2 bbab 7 5 cceddda 6 5 ecdaed 7 4 dcdbdaa 8 3 ccabbaca 5 7 eabba
aaaa baccacd aabdac aabacad aaaaaaaa abadb
Название |
---|