Algoritmul, pas cu pas
Ideea cheie e că nu trebuie să parcurgem fereastra de fiecare dată. Pentru o literă, tot ce contează la range sunt poziția ei cea mai din stânga și cea mai din dreapta din fereastră — restul aparițiilor sunt irelevante. Dacă ținem pozițiile fiecărei litere într-o mulțime ordonată, prima și ultima apariție din se găsesc instant cu două căutări binare, iar o actualizare doar mută o poziție dintr-o mulțime în alta.