#include<bits/stdc++.h>
using namespace std;
int a[26],b[26];
//a数组用于存放某一字母第一次出现的位置
//b数组用于存放到达 某位置 之前的某一字母最后一次出现的位置
//"aca"中'a'最后一次出现在第三个位置,所以b[0]=3,a[0]=1;
int main(){
      int T;cin>>T;
      int n;
      while(T--){
       cin>>n;
       string s;
       cin>>s;
       int mn=100000;
for(int i=0;i<n;i++){//更新b数组
    if(!a[s[i]-97])a[s[i]-97]=i+1,b[s[i]-97]=i+1;
    else{mn=min(mn,i-b[s[i]-97]);b[s[i]-97]=i+1;}
  //每次出现的字母与该字母上一次出现位置的距离
}


bool pan=false;//用于判断该字符串中所有字母是否仅出现一次
for(int i=0;i<26;i++){
  //特殊判断某字母第一次出现与该字母最后一次出现
    if(b[i]!=a[i])pan=true;
    if(a[i]&&a[i]!=b[i])mn=min(n-b[i]+a[i]-1,mn);
  //排除某一字母仅出现一次和未出现过的情况
    a[i]=b[i]=0;
}

if(pan)
cout<<mn<<endl;
else cout<<"-1"<<endl;//所有字母仅出现一次不可能使手链断裂
      }
return 0;
}