Problem-solving ideas:
(1) Back to front, greedy selection, recursive solution
class Solution {
public:
string getSmallestString(int n, int k) {
if(n==0) return "";
if(k-(n-1)>=26) return getSmallestString(n-1,k-26)+'z';
else if(k-(n-1)>=1 && k-(n-1)<26) return getSmallestString(n-1,n-1)+(char)('a'+k-(n-1)-1);
else return "";
}
};