
"""

https://atcoder.jp/contests/agc037/tasks/agc037_e

辞書順最小の文字をAとする
できるだけAが先頭にたくさん並ぶようにしたい

XAYのとき
XAYYAX　となる。これが最後の場合はAを先頭にして取るのがよい
そうでなければ一番後ろがAになるようにとるのが正解？

3なら
YYA → YYAAYY
YAA → YAAAAY
AAA → …

と、Kが5000回以上あるなら絶対全部Aにできる
実際は、Aの長さは倍倍に増えていくのでlog5000回ぐらいで全部Aにできる

Aとして選ぶべき場所は、最長ならそれ
最長が複数ある場合、それ以降の並びが辞書順最小のモノを選ぶべき

実装が面倒くさい系だな…

"""

import sys
N,K = map(int,input().split())
S   = input()

if K == 1:

    u = S + S[::-1]
    #print (u)
    lis = []
    for i in range(N+1):
        lis.append(u[i:i+N])
    lis.sort()
    print (lis[0])
    sys.exit()

else:

    u = S + S[::-1]
    #print (u)
    lis = []
    for i in range(N+1):
        lis.append(u[i:i+N])
    lis.sort()

    SR = lis[0]
    S  = lis[0][::-1]

    LL = 0
    for i in range(1,N):
        if SR[i] != SR[i-1]:
            LL = i
            break
    else:
        LL = N

    for i in range(2,K+1):

        u = S + S[::-1]
        
        SR = u[N-LL:2*N-LL]
        S  = SR[::-1]
        LL *= 2

        if LL >= N:
            break

    print (SR)
