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>
using namespace std;
int n,k;
string s;
vector<string>can;
int main(){
	ios::sync_with_stdio(false);
	cin >> n >> k;
	char c='z';
	cin >> s;
	for(auto cur:s){
		c=min(c,cur);
	}
	if(k>13){
		for(int i=1; i<=n ;i++){
			cout << c;
		}
		cout << endl;
		return 0;
	}
	string t=s;reverse(t.begin(),t.end());
	string u=s+t;
	if(k==1){
		for(int i=n-1; i<2*n ;i++){
			can.push_back(u.substr(i-n+1,n));
		}
	}
	else{
		for(int i=n; i<2*n ;i++){
			if(u[i]==c) can.push_back(u.substr(i-n+1,n));
		}
		for(int i=2; i<=k ;i++){
			for(auto &cur:can){
				t=cur;
				reverse(t.begin(),t.end());
				u=cur+t;
				int ptr=n;
				while(ptr<2*n && u[ptr]==c) ptr++;
				cur=u.substr(ptr-n,n);
			}
		}
		for(auto& cur:can) reverse(cur.begin(),cur.end());
	}
	string ans=can[0];
	for(auto cur:can) ans=min(ans,cur);
	cout << ans << endl;
}