#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool chmax(T &a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T &a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
string ans;
bool checker(long long N, long long K) {
  long long now = 1;
  for (int i = 2; i < K; i++) {
    now *= 2;
    if (now >= N) {
      return true;
    }
  }
  return false;
}
void f(int i, string S, int K, int len) {
  string T = S;
  int N = S.size();
  reverse(T.begin(), T.end());
  S += T;
  if (K == 1) {
    string ret = S.substr(N - len, N);
    chmin(ans, ret);
    return;
  }
  if (i != -1) {
    string ret = S.substr(2 * N - i - N, N);
    if (i + len != N) f(-1, ret, K - 1, len);
    if (i + len == N) f(-1, ret, K - 1, len * 2);
    return;
  }
  string ret = S.substr(max(0, N - len), N);
  f(-1, ret, K - 1, len * 2);
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int N, K;
  string S;
  cin >> N >> K >> S;
  if (checker(N, K)) {
    char mini = 'z';
    for (int i = 0; i < S.size(); i++) {
      chmin(mini, S[i]);
    }
    for (int i = 0; i < S.size(); i++) {
      cout << mini;
    }
    cout << endl;
    return 0;
  }
  char mini = 'z';
  for (int i = 0; i < S.size(); i++) {
    chmin(mini, S[i]);
  }
  ans = "z";
  ans[0]++;
  int l = 0;
  for (int r = 0; r < S.size(); r++) {
    if (S[r] == mini) continue;
    if (l != r) {
      f(l, S, K, r - l);
    }
    l = r + 1;
  }
  if (l != S.size()) {
    f(l, S, K, S.size() - l);
  }
  cout << ans << endl;
  return 0;
}
