JSFiddle - React, Tailwind, and code Playground
JavaScript
function allPossibleCombo(letters, curString){
if(memo[curString]){return memo[curString];}
var numberOfLs = 0;
for(var j = 0; j < curString.length; j++){
if(curString[j] == 'l'){numberOfLs += 1;}
}
if(numberOfLs >= 2){return 0;}
if(curString.includes('aaa')){return 0;}
if(curString.length == 30){return 1;}
var count = 0;
for(var i = 0; i < letters.length; i++){
count += allPossibleCombo(letters, curString + letters[i], memo);
}
memo[curString] = count;
return count;
}
var memo = {};
console.log(allPossibleCombo(['a','o','l'], '', memo));