#nullable enable int n; long k; { var input = Console.ReadLine()!.Split(' '); n = int.Parse(input[0]); k = int.Parse(input[1]); } var s = Console.ReadLine()!; var f = new long[n]; f.AsSpan().Fill(-1); int C(int j, int l) { var c1 = s[j] - '0'; if (c1 == 0) return -1; if (l == 1) return c1; if (c1 >= 3 || j + 1 >= n) return -1; var c2 = c1 * 10 + s[j + 1] - '0'; if (c2 > 26) return -1; return c2; } long F(int j) { if (j == n) return 1; if (f[j] >= 0) return f[j]; var res = 0L; if (C(j, 1) >= 0) res += F(j + 1); if (C(j, 2) >= 0) res += F(j + 2); if (res > k) res = k + 1; return f[j] = res; } var ans = new List(); var j = 0; var l = 0L; while (j < n) { var c1 = C(j, 1); var f1 = F(j + 1); if (l + f1 >= k) { j++; ans.Add(c1); continue; } l += f1; ans.Add(C(j, 2)); j += 2; } Console.WriteLine(new string(ans.Select(e => (char)(e - 1 + 'a')).ToArray()));