#include <bits/stdc++.h>
using namespace std;
int n, k;
char c[5010], ans[5010], s[10010], g;
void chk(char *s) {
  for (int i = 0; i < n; i++)
    if (s[i] != ans[i]) {
      if (s[i] > ans[i]) return;
      for (int j = 0; j < n; j++) ans[j] = s[j];
      return;
    }
}
void solve(char *s, int t) {
  char e[10010];
  for (int i = 0; i < n; i++) e[i] = s[i];
  for (int i = n; i < n * 2; i++) e[i] = s[n + n - i - 1];
  if (t == 1) {
    for (int i = n; i >= 0; i--)
      if (e[i - 1] != g || i == 0) {
        return chk(e + i);
      }
  } else {
    for (int i = 0; i <= n; i++)
      if (e[i + n] != g && e[i + n - 1] == g) {
        solve(e + i, t - 1);
        return;
      }
  }
}
int main() {
  cin >> n >> k;
  scanf("%s", c);
  g = *min_element(c, c + n);
  if (k > 15) {
    for (int i = 1; i <= n; i++) putchar(g);
    return 0;
  }
  for (int i = 0; i < n; i++) ans[i] = c[i];
  for (int i = 0; i < n; i++) s[i] = c[i];
  for (int i = n; i < n * 2; i++) s[i] = c[n + n - i - 1];
  for (int i = 0; i <= n; i++) chk(s + i);
  if (k > 1)
    for (int i = 0; i < n; i++)
      if (s[i + n - 1] == g && s[i + n] != g) solve(s + i, k - 1);
  for (int i = 0; i < n; i++) putchar(ans[i]);
  return 0;
}
