Олимпиадный тренинг

Задача . E. Разрезание строки


Дана непустая строка s и число k. Со строкой один раз проделывают следующую операцию:

  • Разбивают строку на не более чем k непустых подстрок, то есть представляют строку s в виде конкатенации (сцепления) набора строк s = t1 + t2 + ... + tm, 1 ≤ m ≤ k.
  • Некоторые из строк ti заменяются строками tir, то есть их записью справа налево.
  • Строки конкатенируются обратно в том же порядке, получается строка s' = t'1t'2... t'm, где t'i равно ti или tir.

Вам требуется определить лексикографически минимальную строку, которая может получиться в результате одного применения к строке s данной операции.

Входные данные

В первой строке входных данных записана строка s (1 ≤ |s| ≤ 5 000 000), состоящая из строчных букв английского алфавита. Во второй строке содержится целое число k (1 ≤ k ≤ |s|) — максимальное количество частей в разбиении.

Выходные данные

В единственной строке выведите лексикографически минимальную строку s', которая может получиться в результате выполнения описанной операции.


Примеры
Входные данныеВыходные данные
1 aba
2
aab
2 aaaabacaba
2
aaaaabacab
3 bababa
1
ababab
4 abacabadabacaba
4
aababacabacabad

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя