function myout(text){console.log(text);}//standard output
function Main(input) {
	input = input.trim();
	//input = input.trim().split(" ");
	input = input.trim().split("\n");
	//input = input.trim().split(" ").map((a)=>Number(a));
	//input = input.trim().split("\n").map((a)=>Number(a));
  var s = input[0];
  var N = parseInt(input[1]);
  var sList = new Array(s.length);
  var conv = "abcdefghijklmnopqrstuvwxyz".split("");
  var convList = {};
  for(var i = 0; i < conv.length; i++){
    convList[conv[i]] = i;
  }
  //Nの許す限り、左側の文字からaにしていく。s[i] + Nの一部 = 26(conv26番目)
  //ただしs[i]が0ならスルー
  //Nが不足してs[i]を0にできないなら次の文字へ
  //Nが少なくなってどの文字もs[i]を0にできないなら右端の文字だけNだけ進める
  //右端についた時点でNが余り過ぎてたら右端の文字だけ「Nの残り % 26」だけ進める
  for(var i = 0; i < s.length; i++){
  	sList[i] = convList[s.slice(i,i+1)];
  }
  for(var i = 0; i < s.length; i++){
    if(sList[i] == 0 && i != s.length - 1){
       continue;
    }
    if(i == s.length - 1){
       sList[i] = (sList[i] + N) % 26;
      continue;
    }
    if(N == 0){
       break;
    }else if(N < (26 - sList[i])){
      continue;
    }else{
      var add = 26 - sList[i];
      sList[i] = (sList[i] + add) % 26;
      N -= add;
    }
    //myout(sList[i]);
  }
  var output = "";
  for(var i = 0; i < s.length; i++){
    output += conv[sList[i]];
  }
  myout(output);
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));
