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
import math
def facts(n):
    ans = []
    for  i in range(1, int(math.sqrt(n)+1)):
        if(n%i==0):
            ans.append(i)
            ans.append(n//i)
    ans = sorted(list(dict.fromkeys(ans)))
    if(ans[-1]==n):
        ans = ans[:-1]
    return ans

n,k = map(int, input().split())
s  = str(input())
cnt = 0
pnt = 0
ans = ''
while(k > 0 and pnt < n):
    sub= 0
    dif = ord(s[pnt])-ord('a')
    sub= max(-dif, -k,-26)
    if(dif < 13):
        dif = ord('z')-ord(s[pnt])
        sub = min(dif, k, 26)
    k-=abs(sub)
    ans+=chr(ord(s[pnt])+sub)
    pnt+=1
if(k==0):
    while(pnt < n):
        ans+=s[pnt]
        pnt+=1
    print(ans)
else:
    print(-1)