class Solution:
    def minWindow(self , S: str, T: str) -> str:
        if not T or not S:
            return ''
        
        dic = {}
        for c in T:
            dic[c] = dic.get(c, 0) + 1

        res = []
        for i in range(len(S)):
            count = 0
            record = dic.copy()
            if S[i] in record:
                start = i
                record[S[i]] -= 1
                count += 1
                if count == len(T):
                    return S[i]
                for j in range(i + 1, len(S)):
                    if S[j] in record:
                        if record[S[j]] == 0:
                            continue
                        elif record[S[j]] > 0:
                            record[S[j]] -= 1
                            count += 1
                            if count == len(T):
                                tmp = S[start:j + 1]
                                res.append([tmp, len(tmp)])
        res = sorted(res, key=lambda x: x[1])
        return res[0][0] if res else ''