Динамическое программирование / среда

Для заданного целого числа n вернуть количество строк длины n, состоящих только из гласных (a, e, i, o, u) и отсортированных лексикографически.

Строка s лексикографически отсортирована, если для всех допустимых значений i значение s[i] равно или предшествует s[i+1] в алфавите.

Пример 1

Input: n = 1
Output: 5
Explanation: The 5 sorted strings that consist of vowels only are ["a","e","i","o","u"].

Пример 2

Input: n = 2
Output: 15
Explanation: The 15 sorted strings that consist of vowels only are
["aa","ae","ai","ao","au","ee","ei","eo","eu","ii","io","iu","oo","ou","uu"].
Note that "ea" is not a valid string since 'e' comes after 'a' in the alphabet.

Решение

function countVowelStrings(n: number): number {
    if (n===1) return 5;
    let values: number[] = [1,1,1,1,1]; 
    for (let k=2; k<=n; k++) {       
        for (let i=1; i<5; i++) {
            values[i] += values[i-1]
        }
    }
    
    let ret = 0;
    for (let e of values) {
        ret += e;
    }
        
    return ret;
};