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;
typedef long long ll;
const int N=100005,inf=0x3f3f3f3f;
int read(){
	int f=1,g=0;
	char ch=getchar();
	for (;!isdigit(ch);ch=getchar()) if (ch=='-') f=-1;
	for (;isdigit(ch);ch=getchar()) g=g*10+ch-'0';
	return f*g;
}
int n,K;
char ch[N];
string ans,cur,a,b;
string calc(string &a,int k){
	int cnt=0;
	for (cnt=0;(cnt<n)&&(a[cnt]==a[0]);cnt++);
	string ret;
	for (int i=1;i<=n;i++)
	ret+=(i<=(cnt<<k)) ? a[0] : a[i-(cnt<<k)+cnt-1];
	return ret;
}
int main(){
	n=read();K=read();
	scanf(" %s",ch+1);
	if ((K>=20)||((1<<(K-1))>=n)){
		char c=ch[1];
		for (int i=1;i<=n;i++) c=min(c,ch[i]);
		for (int i=1;i<=n;i++) putchar(c);
		puts("");
		return 0;
	}
	for (int i=n;i;i--) b+=ch[i];
	cur=b;
	ans=calc(cur,K);
	for (int i=n;i;i--){
		b=ch[i]+b;
		cur=min(cur,b);
	}
	ans=min(ans,calc(cur,K-1));
	for (int i=0;i<n;i++) putchar(ans[i]);
	puts("");
	return 0;
}