#include <bits/stdc++.h>
using namespace std;
const int N = 10005;
int n, k;
char mi, mx, s[N], t[N], ans[N];
void ckmin() {
  bool flag = true;
  for (int i = 1; i <= n; i++) {
    if (t[i] > ans[i]) {
      flag = false;
      break;
    } else if (t[i] < ans[i]) {
      break;
    }
  }
  if (flag) {
    for (int i = 1; i <= n; i++) {
      ans[i] = t[i];
    }
  }
}
void gao(char s[], int k) {
  int len = 1;
  while (len < n && s[n - len] == mi) {
    len++;
  }
  int now = n - len + 1;
  while (k && len < n) {
    len *= 2;
    k--;
  }
  if (len >= n) {
    for (int i = 1; i <= n; i++) {
      t[i] = mi;
    }
    ckmin();
  } else {
    for (int i = 1; i <= len; i++) {
      t[i] = mi;
    }
    for (int i = len + 1; i <= n; i++) {
      t[i] = s[--now];
    }
    ckmin();
  }
}
int main() {
  scanf("%d%d%s", &n, &k, s + 1);
  mi = 'z', mx = 'a';
  for (int i = 1; i <= n; i++) {
    s[2 * n - i + 1] = s[i];
    mi = min(mi, s[i]);
    mx = max(mx, s[i]);
    ans[i] = 'z';
  }
  if (mx == mi) {
    puts(s + 1);
    return 0;
  }
  if (s[n] == mi) {
    gao(s, k);
  }
  for (int i = n; i < 2 * n; i++) {
    if (s[i] == mi) {
      gao(s + i - n, k - 1);
    }
  }
  puts(ans + 1);
  return 0;
}
