// class Solution {
// public:
// vector<string>res;
// string s="abc";
// void dfs (int start,int h,string &ans){
// ans+=s[start];
// if(h==1) {
// res.push_back(ans);
// return ;
// }
// for(int i=0;i<s.size();i++){
// if( i==start) continue;
// string tmp2=ans;
// dfs(i,h-1,ans);
// ans=tmp2;
// }
// }
// string getHappyString(int n, int k) {
// string ans="";
// for(int i=0;i<3;i++){
// dfs(i,n,ans);
// ans="";
// }
// // for (auto x:res) cout<<x<<endl;
// if(k>res.size()) return "";
// return res[k-1];
// }
// };
class Solution {
public:
string res;
string s="abc";
void dfs (int n,int & k,string &ans){
if(ans.size()==n) {
k-=1;
if(k==0)
res=ans;
return ;
}
for(int i=0;i<s.size();i++){
if(ans.size()==0 || ans[ans.size()-1]!=s[i]){
ans+=s[i];
dfs(n,k,ans);
ans.pop_back();
}
}
}
string getHappyString(int n, int k) {
string ans="";
dfs(n,k,ans);
return res;
}
};
class Solution:
def getHappyString(self, n: int, k: int) -> str:
res=None
def dfs(s):
nonlocal k,res
if(len(s)==n):
k=k-1
if k==0:
res=s
return
for c in ['a','b','c']:
if not s or s[-1]!=c:
dfs(s+c)
dfs("")
return "" if not res else res