Limak is a little polar bear. He likes nice strings — strings of length *n*, consisting of lowercase English letters only.

The distance between two letters is defined as the difference between their positions in the alphabet. For example, <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/b94160a4d1c955e1b6cd4a0fe139f103c35ac73f.png" style="max-width: 100.0%;max-height: 100.0%;"/>, and <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/7a05c5ca27b2dc782643b883e8a0bae7e3298e4f.png" style="max-width: 100.0%;max-height: 100.0%;"/>.

Also, the distance between two nice strings is defined as the sum of distances of corresponding letters. For example, <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/77f313bb7e669a438377b73e0dcdc89dc88f4a7a.png" style="max-width: 100.0%;max-height: 100.0%;"/>, and <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/51de79586a12d9aa6a55105517514bcd173984a8.png" style="max-width: 100.0%;max-height: 100.0%;"/>.

Limak gives you a nice string *s* and an integer *k*. He challenges you to find any nice string *s*' that <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/586a7bce2dc944b81b116fca51344694db717b8b.png" style="max-width: 100.0%;max-height: 100.0%;"/>. Find any *s*' satisfying the given conditions, or print "-1" if it's impossible to do so.

As input/output can reach huge size it is recommended to use fast input/output methods: for example, prefer to use gets/scanf/printf instead of getline/cin/cout in C++, prefer to use BufferedReader/PrintWriter instead of Scanner/System.out in Java.
The first line contains two integers *n* and *k* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>, 0 ≤ *k* ≤ 10<sup class="upper-index">6</sup>).

The second line contains a string *s* of length *n*, consisting of lowercase English letters.
none
4 26
bear
zcar
2 7
af
hf
3 1000
hey
-1
5 50
kzsij
zaiij
5 500
vsdxg
-1
1 0
a
a
1 1
g
f
1 25
r
-1
1 15
o
-1
10 100
addaiyssyp
zzzzcyssyp
50 100
tewducenaqgpilgftjcmzttrgebnyldwfgbtttrygaiqtkgbjb
azazecenaqgpilgftjcmzttrgebnyldwfgbtttrygaiqtkgbjb
2 1
zz
yz
8 8
abcdefgh
ibcdefgh
1 25
z
a
1 24
z
b
1 24
y
a
2 49
zz
ab
1 26
a
-1
1 25
a
z
4 17
rzsq
azsq
69 1701
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzy
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaax
2 9
bc
kc
2 48
ab
zy
1 8
c
k
2 25
yd
ac
5 24
izrqp
zsrqp
1 13
n
a
5 21
fmmqh
zlmqh
n, k = map(int, input().split())
s = input()
maxi = 0
e = str()
for i in range(len(s)):
    g1 = ord(s[i]) - ord('a')
    g2 = ord('z') - ord(s[i])
    if g2 > g1:
        e += 'z'
    else:
        e += 'a'
    maxi += max(g1, g2)
if maxi < k:
    print(-1)
else:
    for i in range(len(s)):
        if abs(ord(e[i]) - ord(s[i])) <= k:
            k -= abs(ord(e[i]) - ord(s[i]))
            print(e[i], end = '')
        else:
            if 'a' <= chr(ord(s[i]) + k) <= 'z':
                print(chr(ord(s[i]) + k), end = '')
            else:
                print(chr(ord(s[i]) - k), end = '')
            k = 0
