package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
var k, t int
if _, err := fmt.Fscan(in, &k, &t); err != nil {
return
}
var d string
if _, err := fmt.Fscan(in, &d); err != nil {
return
}
n := 1 << k
t = t % k
R := make([]int, n)
mask := n - 1
shift1 := t
shift2 := k - t
for x := 0; x < n; x++ {
R[x] = ((x >> shift1) | (x << shift2)) & mask
}
cand := make([]int, n)
for i := 0; i < n; i++ {
cand[i] = i
}
for x := 0; x < n; x++ {
if len(cand) == 1 {
break
}
rx := R[x]
minC := byte(255)
for _, m := range cand {
idx := rx + m
if idx >= n {
idx -= n
}
c := d[idx]
if c < minC {
minC = c
}
}
j := 0
for _, m := range cand {
idx := rx + m
if idx >= n {
idx -= n
}
if d[idx] == minC {
cand[j] = m
j++
}
}
cand = cand[:j]
}
best := cand[0]
out := make([]byte, n)
for x := 0; x < n; x++ {
idx := R[x] + best
if idx >= n {
idx -= n
}
out[x] = d[idx]
}
outWriter := bufio.NewWriter(os.Stdout)
outWriter.Write(out)
outWriter.WriteByte('\n')
outWriter.Flush()
}