C++ code using recursion and memoization (DP) 100% faster
```\nclass Solution {\npublic:\n    int count(int n,int vow,vector>&dp){\n        if(vow==0) return dp[n][vow] =  0;\n        if(dp[n][vow] != -1)\n            
```\nclass Solution {\npublic:\n    int count(int n,int vow,vector<vector<int>>&dp){\n        if(vow==0) return dp[n][vow] =  0;\n        if(dp[n][vow] != -1)\n            return dp[n][vow];\n        if(n==0) return dp[n][vow] = 1;\n        dp[n][vow] = count(n,vow - 1,dp) + count(n - 1,vow,dp);\n        return dp[n][vow];\n    }\n    int countVowelStrings(int n) {\n        vector<vector<int>>dp(n + 1,vector<int>(6,-1));\n        return count(n,5,dp);\n    }\n};
['Dynamic Programming', 'Recursion', 'Memoization', 'C']