CF628C Bear and String Distance

题目描述

Limak 是一只小北极熊。他喜欢 **好的** 字符串——只由小写英文字母构成,长度为 $n$ 的字符串。 两个字母的距离定义为它们在字母表中的位置差异。例如, $\mathrm{dist}(\mathrm c, \mathrm e) = \mathrm{dist}(\mathrm e, \mathrm c) = 2$,$\mathrm{dist}(\mathrm a, \mathrm z) = \mathrm{dist}(\mathrm z, \mathrm a) = 25$。 两个好的字符串的距离定义为对应字符的距离之和。例如, $\mathrm{dist}(\mathrm{af}, \mathrm{db}) = \mathrm{dist}(\mathrm a, \mathrm d) + \mathrm{dist}(\mathrm f, \mathrm b) = 3 + 4 = 7$,$\mathrm{dist}(\mathrm{bear}, \mathrm{roar}) = 16 + 10 + 0 + 0 = 26$。 现在,Limak 会给你一个好的字符串 $s$ 和一个整数 $k$。他挑战你找到一个一个好的字符串 $s'$ 满足 $\mathrm{dist}(s, s') = k$。如果无解,输出 `-1`。 注意,由于输入输出可以很大,推荐使用快速读写:例如,在 C++ 中推荐使用 `gets/scanf/printf` 而非 `getline/cin/cout`,在 `Java` 中推荐使用 `BufferedReader/PrintWriter` 而非 `Scanner/System.out`。

输入格式

第一行包含两个整数 $n$ 和 $k$($1 \leq n \leq 10^5$,$0 \leq k \leq 10^6$)。 第二行包含一个长度为 $n$ 的字符串 $s$,仅包含小写英文字母。

输出格式

如果没有字符串满足条件,输出 `-1`。 否则,输出任意满足 $\mathrm{dist}(s, s') = k$ 的好的字符串 $s'$。