importmathdefmin_window(s,t):min_len=math.infmin_index=0left_pointer=0valid_chars_count=0tset={}forcharint:tset[char]=tset.get(char,0)+1forright_pointerinrange(len(s)):char=s[right_pointer]ifcharnotintset:continuetset[char]-=1iftset[char]>=0:valid_chars_count+=1ifvalid_chars_count!=len(t):continue# increase the left_pointer if possible
whileTrue:schar=s[left_pointer]ifscharintset:iftset[schar]==0:breaktset[schar]+=1left_pointer+=1new_min_len=right_pointer-left_pointer+1ifnew_min_len<min_len:min_len=new_min_lenmin_index=left_pointerreturn""ifmin_len==math.infelses[min_index:min_index+min_len]