滑动窗口解决

#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
   string k ="puleyaknoi";
    int t[26]={0};
    int cnt=0;
    for(char c:k)
    {
        if(++t[c-'a']==1)
        {cnt++;}
    }
    int x;cin>>x;
    while(x--){
        string s;
        cin>>s;
    int l=0;
        int ok=0;
    int ans=1e6;
    int w[26]={0};
    for(int r =0;r<s.size();r++){
        int idx=s[r]-'a';
        if(t[idx]&&++w[idx]==t[idx]){ok++;}
        while(ok==cnt){
            ans =min(ans,r-l+1);
            int lidx =s[l++]-'a';
            if(t[lidx]&&--w[lidx]<t[lidx]){
                ok--;
            }
        }
    }
        if(ans==1e6){cout<<-1<<endl;}
        else{cout<<ans<<endl;}
        }
    return 0;
}