import sys input = sys.stdin.readline N,K=map(int,input().split()) S=input().strip() if K==1: ANS=[] for i in range(N): ANS.append(chr(int(S[i])+96)) print("".join(ANS)) exit() X=[] ind=0 while ind=len(X)-1: DP[x]=1 return 1 a=X[x]+X[x+1] if "j" in a or "t" in a: ANS=calc(x+1) DP[x]=ANS return ANS if 11<=int(a)<=19 or 21<=int(a)<=26: ANS=calc(x+2)*2+calc2(x+1) DP[x]=ANS return ANS else: ANS=calc(x+1) DP[x]=ANS return ANS # x,x+1を変化させたとき、何通り? def calc2(x): if DP2[x]!=-1: return DP2[x] if x>=len(X)-1: DP2[x]=0 return 0 a=X[x]+X[x+1] if "j" in a or "t" in a: DP2[x]=0 return 0 if 11<=int(a)<=19 or 21<=int(a)<=26: ANS=calc(x+2) DP2[x]=ANS return ANS else: DP2[x]=0 return 0 ind=0 ANS=[] while indOK+1: #print(OK,NG,calc(OK),calc(NG)) mid=(OK+NG)//2 score=calc(mid) if score>=K: OK=mid else: NG=mid #print(OK) K-=calc(OK+1) for i in range(ind,OK): if X[i]=="j" or X[i]=="t": ANS.append(X[i]) else: ANS.append(chr(int(X[i])+96)) ANS.append(chr(int(X[OK]+X[OK+1])+96)) ind=OK+2 if K==1: for i in range(ind,len(X)): if X[i]=="j" or X[i]=="t": ANS.append(X[i]) else: ANS.append(chr(int(X[i])+96)) break print("".join(ANS))