DP Solution [ Tabulation ] ✔
The solution has dynamic programming approach.\nWe have 5 vowels : [a,e,i,o,u]\nIf n = 1:\n\t\tsolution will have {a,e,i,o,u} as possible valid string\nIf n == 
The solution has **dynamic programming approach**.\nWe have 5 vowels : [a,e,i,o,u]\n*If n = 1:*\n\t\tsolution will have {a,e,i,o,u} as possible valid string\n*If n == 2*:\nsolution string will have ["aa","ae","ai","ao","au","ee","ei","eo","eu","ii","io","iu","oo","ou","uu"]\nthis can be explained as:\nfor a we can add :\naa, ae, ai, ao, au\nfor e:\nee, ei,eo, eu (we can\'t have \'ea\')\nsimilary for i, o , u\nNow I\'ve tried to show the patter with the help of below table.\n![image](https://assets.leetcode.com/users/images/5ae8bcb6-ac91-447d-838d-42a00fc3cb7f_1645291350.7443595.png)\nfrom the table we can see then \ntable[i][j] = table[i][j+1]+table[i-1][j]\nNow, this will be the approach to move toward solution.\n\nComplete Solution:\n\n```\nclass Solution:\n    def countVowelStrings(self, n: int) -> int:\n        if n == 1:\n            return 5\n\t\t#initialised the table with 1\n        dp = [[1]*5 for i in range(n+1)]\n\t\t\n        for i in range(1,n+1):\n            for j in range(3,-1,-1):\n                dp[i][j] = dp[i][j+1]+dp[i-1][j]\n                \n        return dp[n][0]\n                \n            \n\n        \n                    \n                    \n                    \n                    \n                    \n            \n            \n        \n```\n\n\n
['Dynamic Programming']