C++ solution || dp || memoization
\nclass Solution {\npublic:\n    long long mod=1e9+7;\n    long long dp[100005][3][2][2];\n    long long solve(int ind,int n,int e,int l,int t){\n        if(ind
```\nclass Solution {\npublic:\n    long long mod=1e9+7;\n    long long dp[100005][3][2][2];\n    long long solve(int ind,int n,int e,int l,int t){\n        if(ind==n){\n            if(e>=2 and l>=1 and t>=1) return 1;\n            else return 0;\n        }\n        if(dp[ind][e][l][t]!=-1) return dp[ind][e][l][t];\n        long long take=0;\n        for(int i=0;i<26;i++){\n            if(i==4 && e<2){\n                    take=(take+ (solve(ind+1,n,e+1,l,t)) %mod)%mod;\n            }\n            \n            else if(i==11 && l<1){\n                    take=(take+ (solve(ind+1,n,e,l+1,t)) %mod)%mod;\n            }\n            \n            else if(i==19 && t<1){\n                    take=(take+ (solve(ind+1,n,e,l,t+1)) %mod)%mod;\n            }\n            else take=(take+ (solve(ind+1,n,e,l,t)) %mod)%mod;\n        }\n        return dp[ind][e][l][t]=take%mod;\n    }\n    int stringCount(int n) {\n        memset(dp,-1,sizeof(dp));\n        return solve(0,n,0,0,0)%mod;\n    }\n};\n```
['Memoization', 'C']