// 活动地址: 牛客春招刷题训练营 - 编程打卡活动 #include<iostream> #include<algorithm> #include<cmath> #include<vector> #define int long long using namespace std; void solve(){ string s; int n; cin>>n; cin>>s; // 因为是环装 所以s*2 s=s+s; // 用来存储 每个字母上次出现的位置 vector<int>pos(30,-1); int ans=n-1; // 初始给设为长度减一 for(int i=0;i<s.size();i++){ // 取最小 if(pos[s[i]-'a']!=-1)ans=min(ans,i-pos[s[i]-'a']-1); pos[s[i]-'a']=i; } // 如果没变 输出-1 if(ans>=n-1)cout<<"-1"<<"\n"; else cout<<ans<<"\n"; } signed main(){ int T=1; ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>T; // T 组数据 while(T--){ solve(); } return 0; } // 活动地址: 牛客春招刷题训练营 - 编程打卡活动