#include<cstdio>
#include<iostream>
#define RI register int
#define CI const int&
using namespace std;
const int N=10005;
char s[N],mi='z',ans[N],tp[N]; int n,k;
inline bool cmp_min(char *a,char *b)
{
	for (RI i=1;i<=n;++i)
	if (a[i]!=b[i]) return a[i]<b[i]; return 0;
}
inline void solve(char *s,int k)
{
	int nw=n,len=0; while (nw&&s[nw]==mi) --nw,++len;
	while (k&&len<n) --k,len<<=1; len=min(n,len);
	RI i; for (i=1;i<=len;++i) tp[i]=mi;
	for (i=len+1;i<=n;++i) tp[i]=s[nw--];
	if (cmp_min(tp,ans)) for (i=1;i<=n;++i) ans[i]=tp[i];
}
int main()
{
	RI i; for (scanf("%d%d%s",&n,&k,s+1),i=1;i<=n;++i)
	mi=min(s[i],mi),s[(n<<1)-i+1]=s[i],ans[i]='z';
	if (s[n]==mi) solve(s,k);
	for (i=n+1;i<=(n<<1);++i) if (s[i]==mi) solve(s+i-n,k-1);
	return puts(ans+1),0;
}