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
/*
    Author : MAHIM_JU_CSE
    From   : CSE,JU,Batch:47
    Date   : 23.10.2020
*/
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define MAX 1e18
#define MIN -1e18
#define pb push_back
#define pf push_front
#define ppb pop_back()
#define ppf pop_front()
#define mk make_pair
#define pii pair<int,int>
#define psi pair<string,int>
#define pis pair<int,string>
#define pli pair<long long int,int>
#define pll pair<long long int,long long int>
#define mii map<int,int>
#define msi map<string,int>
#define mis map<int,string>
#define mli map<long long int,int>
#define mll map<long long int,long long int>
#define qi queue<int>
#define qll queue<ll>
#define dqll deque<ll>
#define dqi deque<int>
#define memset(array,value) memset(array,value,sizeof(array))
#define endl "\n"
#define LCM(a,b) a*b/__gcd(a,b)
#define GCD(a,b) __gcd(a,b)
#define Sort(name) sort(name.begin(),name.end())
#define sorT(name) sort(name.rbegin(),name.rend())
const double pi = acos(-1.0);
using namespace std;
#define fio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)

void printtime()
{
    time_t my_time = time(NULL);
    printf("%s", ctime(&my_time));
}

ll fact(ll n)
{
    return (n==0) || (n==1) ? 1 : n* fact(n-1);
}
void sieve(ll n)
{
    bool check[n+1];
    memset(check,true);
    for(ll i=2; i*i<=n; i++)
        if(check[i]==true)
            for(ll j=i*i; j<=n; j+=i)
                check[j]=false;
    for(ll i=2; i<=n; i++)
    {
        if(check[i]==true)
        {
            cout<<i<<" ";
        }
    }
}

bool isprime(ll n)
{
    if(n<=1)
        return false;
    if(n<=3)
        return true;
    if(n%2==0||n%3==0)
        return false;
    for(ll i=5; i*i<=n; i=i+6)
        if(n%i==0||n%(i+2)==0)
            return false;
    return true;
}
const ll mod=1e9+7;


int main()
{
    fio;
    ll t;
    //cin>>t;
    t=1;
    while(t--)
    {
        int n,k;
        cin>>n>>k;
        string s,ans;
        cin>>s;
        int sum=0;
        for(int i=0; i<n; i++)
        {
            if(s[i]-'a'>=13)
            {
                sum+=(s[i]-'a');
            }
            else
                sum+=('z'-s[i]);
        }
        if(k>sum)
        {
            cout<<-1<<endl;
            continue;
        }
        int sm=0,i;

        for(i=0; i<n; i++)
        {
            if(k-sm<=0 || k-sm<13)
                break;
            if(s[i]-'a'>=13)
            {
                ans.pb('a');
                sm+=s[i]-'a';
            }
            else
            {
                ans.pb('z');
                sm+=('z'-s[i]);
            }
            //cout<<sm<<endl;

        }
        //cout<<ans<<endl;
        if(k-sm>0)
        {
            int x=k-sm;
            if(s[i]-'a'>=13)
            {
                ans.pb(s[i]-x);
            }
             else
            {
                ans.pb(s[i]+x);
            }
            i++;
        }
        for(int j=i;j<n;j++)
        {
            ans.pb(s[j]);
        }
        cout<<ans<<endl;

    }
    return 0;
}


//Careful about special cases(n==1,n==2,n==n) and overflow (int vs ll)?
