printЗадачи очного тура личного первенства

printD. Удаление букв

Ограничения: время – 300ms/600ms, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Из слова длиной `n` букв можно удалить `k` из них `C_n^k` способами (если рассматривать только позиции букв в слове). Например, удалив 2 буквы из слова above, можно получить 10 слов: ove, bve, boe, bov, ave, aoe, aov, abe, abv, abo. Если упорядочить эти слова по алфавиту, то получим следующий список слов: abe, abo, abv, aoe, aov, ave, boe, bov, bve, ove.
Напишите программу, которая выводит первое и последнее слово из отсортированного в лексикографическом порядке списка всех возможных слов, полученных из заданного с помощью удаления ровно `k` букв.
Первая строка ввода содержит два целых числа – длина слова `n` (`2\ ≤\ n\ ≤\ 10^5`) и количество удаляемых букв `k` (`1\ ≤\ k\ <\ n`). Вторая строка содержит слово из `n` строчных латинских букв.
В первой строке вывести первое слово, а во второй строке – последнее слово из отсортированного списка слов.

Пример ввода

5 2
above

Пример вывода

abe
ove
loading