[GO] DP | Recursive + Memo
Code\n\nfunc stringCount(n int) int {\n    memo := map[[2]int]int{}\n    var recursive func (i, l, e, t int) int \n    recursive = func (i, l, e, t int) int {\n
# Code\n```\nfunc stringCount(n int) int {\n    memo := map[[2]int]int{}\n    var recursive func (i, l, e, t int) int \n    recursive = func (i, l, e, t int) int {\n        if i == n {\n            if l >= 1 && e >= 2 && t >= 1 {\n                return 1\n            }\n            return 0\n        }\n        if val, ok := memo[[2]int{i, l * 100 + e * 10 + t}]; ok {\n            return val\n        }\n        ans := 0\n        for j := 0; j < 26; j++ {\n            if j + \'a\' == \'l\' && l < 1 {\n                ans = (ans + recursive(i+1, l+1, e, t)) % 1000000007\n            } else if j + \'a\' == \'e\'  && e < 2 {\n                ans = (ans + recursive(i+1, l, e+1, t)) % 1000000007\n            } else if j + \'a\' == \'t\' && t < 1 {\n                ans = (ans + recursive(i+1, l, e, t+1)) % 1000000007\n            } else {\n                ans = (ans + recursive(i+1, l, e, t)) % 1000000007\n            }\n        }\n        memo[[2]int{i, l * 100 + e * 10 + t}] = ans\n        return ans\n    }\n\n    return recursive(0, 0, 0, 0)\n}\n\n\n\n\n```
['Dynamic Programming', 'Recursion', 'Memoization', 'Go']