Takahashi has a string S of length N consisting of lowercase English letters. On this string, he will perform the following operation K times:

* Let T be the string obtained by reversing S, and U be the string obtained by concatenating S and T in this order.
* Let S' be some contiguous substring of U with length N, and replace S with S'.



Among the strings that can be the string S after the K operations, find the lexicographically smallest possible one.

Constraints

* 1 \leq N \leq 5000
* 1 \leq K \leq 10^9
* |S|=N
* S consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:


N K
S


Output

Print the lexicographically smallest possible string that can be the string S after the K operations.

Examples

Input

5 1
bacba


Output

aabca


Input

10 2
bbaabbbaab


Output

aaaabbaabb
#include <bits/stdc++.h>
#define F first
#define S second
using namespace std;
using ll = long long;
typedef pair<int, int> P;
ll Mod = 1000000007;
int main() {
  int N;
  ll K;
  cin >> N >> K;
  string S;
  cin >> S;
  while (K != 1) {
    K--;
    bool Flag = true;
    char c = S[0];
    for (int i = 0; i < N; i++) {
      if (S[i] != c) {
        Flag = false;
      }
    }
    if (Flag) {
      break;
    }
    string SS = S;
    reverse(S.begin(),S.end());
    string revS = S;
    string str = SS + revS;
    string mini = SS;
    for (int i = 0; i < N; i++) {
      string sub = str.substr(i,N);
      reverse(sub.begin(),sub.end());
      if (mini > sub) {
        mini = sub;
      }
    }
    reverse(mini.begin(),mini.end());
    S = mini;
  }
  string tmp = S;
  string mi = S;
  reverse(S.begin(),S.end());
  tmp += S;
  for (int i = 0; i < N; i++) {
    string sub = tmp.substr(i,N);
    if (mi > sub) {
      mi = sub;
    }
  }
  cout << mi << endl;
  return 0;
}