Python | My advice
My advice for solving this problem is to:\n Understand the intuition and what to do at a high level\n Try to implement your own solution WITHOUT copying anyone 
My advice for solving this problem is to:\n* Understand the intuition and what to do at a high level\n* Try to implement your own solution WITHOUT copying anyone elses\n* This is how you will learn\n* You will remember high level concepts, but never line for line code\n\nIntuition:\n* Two pointers, left and right\n* Both start from 0,0\n* Increase right pointer until valid window is found\n* Decrease left pointer until window is no longer valid\n* Add the minimum length window you\'ve found to your results\n* Continue increasing right pointer, pretty much repeating what we did above\n* Return the minimum length of your results\n\n\nMy code is AC but definitely not optimal, so I have some more learning & practice to do. I just wanted to share that by trying to implement & solve most of the problem yourself (after learning the high level concept), your learning is massive.\n\n\n```python\nfrom collections import Counter\n\n\nclass Solution:\n    def minWindow(self, s: str, t: str) -> str:\n        \n        # Define variables\n        s_count, t_count = Counter(), Counter(t)\n        \n        l, r = 0, 0\n        \n        results = []\n        \n        while r <= len(s)-1:\n                                    \n            # Find valid window\n            s_count[s[r]] += 1            \n            r += 1\n            if s_count & t_count != t_count:\n                continue\n                \n            # Minimize this window\n            while l < r:\n                s_count[s[l]] -= 1 \n                l += 1\n                if s_count & t_count == t_count:\n                    continue\n                results.append(s[l-1:r])\n                break\n            \n            \n        # Return result\n        if not results:\n            return ""        \n        return min(results, key=len)\n```
['Python', 'Python3']