#include <bits/stdc++.h>
using namespace std;
char p[10010], q[5010], res[5010];
int n, K, C[10100];
int main() {
  int i, j;
  scanf("%d%d", &n, &K);
  scanf("%s", p + 1);
  char Mn = 'z';
  for (i = 1; i <= n; i++) {
    if (Mn > p[i]) Mn = p[i];
  }
  if (K >= 15) {
    for (i = 1; i <= n; i++) printf("%c", Mn);
    puts("");
    return 0;
  }
  for (i = 1; i <= n; i++) p[n + n + 1 - i] = p[i];
  if (K == 1) {
    for (i = 0; i < n; i++) res[i] = 'z';
    for (i = 1; i <= n; i++) {
      for (j = 0; j < n; j++) q[j] = p[i + j];
      if (strcmp(q, res) < 0) {
        for (j = 0; j < n; j++) res[j] = q[j];
      }
    }
    printf("%s\n", res);
    return 0;
  }
  int Mx = -1;
  for (i = 1; i <= n + n; i++) {
    C[i] = C[i - 1] + 1;
    if (p[i] != Mn) C[i] = 0;
    Mx = max(Mx, C[i]);
  }
  for (i = 0; i < n; i++) res[i] = 'z';
  for (i = n; i <= n + n; i++) {
    if (Mx == C[i]) {
      int c = 0;
      for (j = i; j >= i - n + 1; j--) {
        q[c++] = p[j];
      }
      if (strcmp(q, res) < 0) {
        for (j = 0; j < n; j++) res[j] = q[j];
      }
    }
  }
  for (i = 1; i < K; i++) {
    Mx = min(Mx * 2, n);
  }
  for (i = 0; i < Mx; i++) printf("%c", Mn);
  if (Mx < n) {
    for (i = 0; res[i] == Mn; i++)
      ;
    int t = i;
    for (i = 0; i < n - Mx; i++) printf("%c", res[t + i]);
  }
  puts("");
}
