#include using namespace std; using ll = long long; template T ADD(T a, T b){ T res; return __builtin_add_overflow(a, b, &res)? std::numeric_limits::max() : res; } int main() { ios::sync_with_stdio(false); cin.tie(0); int n; ll k; string s; cin >> n >> k >> s; vector dp(n + 1); dp[n] = 1; for(int i = n; i >= 1; i--){ int v = s[i - 1] - '0'; if(v >= 1) dp[i - 1] = ADD(dp[i - 1], dp[i]); if(i >= 2){ v += 10 * (s[i - 2] - '0'); if(s[i - 2] == '0') continue; if(v <= 26){ dp[i - 2] = ADD(dp[i - 2], dp[i]); } } } k--; string ans; for(int i = 0; i < n; i++){ if(i + 1 < n){ int v = 10 * (s[i] - '0') + s[i + 1] - '0'; if(k >= dp[i + 1] && v <= 26){ k -= dp[i + 1]; ans += 'a' + v - 1; i++; continue; } } ans += 'a' + (s[i] - '0') - 1; } cout << ans << '\n'; }