✅Python || ✔Easy To understand🚀 ||💥💥Bottom Up  DP Approach
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:O(N^2)\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:O(N)\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code Upvote Please\uD83D\uDE09\uD83D\uDC4D and Help Me \uD83D\uDE4C\uD83E\uDD1E\u2764\n```\nclass Solution(object):\n    def minDistance(self, word1, word2):\n        """\n        :type word1: str\n        :type word2: str\n        :rtype: int\n        """\n        len1 = len(word1)\n        len2 = len(word2)\n        dp = [[-1] * (len2+1) for _ in range(len1+1)]\n        \n        for i in range(len1+1):\n            for j in range(len2+1):\n                if i == 0:\n                    dp[i][j] = j  \n                elif j == 0:\n                    dp[i][j] = i  \n                elif word1[i-1] == word2[j-1]:\n                    dp[i][j] = dp[i-1][j-1]\n                else:\n                    dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1\n        return dp[len1][len2]\n        \n        \n        \n        \n\n```
['String', 'Dynamic Programming', 'Python']