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
#pragma GCC optimize("O2,unroll-loops")
#include<bits/stdc++.h>
#define all(x) x.begin(), x.end()
using namespace std;
using vi = vector<int>;
string get(string s, int k) {
	int n = s.size();
	int suf = 1;
	while(suf < n && s[s.size()-1-suf] == s.back()) suf++;
	while(k && suf < n) {
		if(--k) {
			string t = s;
			reverse(all(t));
			t = s + t;
			s = t.substr(suf, n);
		} else {
			string t = s;
			reverse(all(t));
			t = s + t;
			s = t.substr(n-suf, n);
		}
		suf *= 2;
	}
	return s;
}
int main() {
	cin.tie(0)->sync_with_stdio(0);
	char mn = 'z'+1;
	int n, k;
	string s;
	cin >> n >> k >> s;
	for(auto i : s) mn = min(mn, i);
	if(k > 12) return cout << string(n, mn), 0;
	string u = s;
	reverse(all(u));
	u = s + u;
	string ans(1, 'z'+1);
	for(int i = 0; i+n-1 < 2*n; i++) ans = min(ans, get(u.substr(i, n), k-1));
	cout << ans;
}
