#include <climits>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<pair<int, string>> vec(n);//store input data
int num;
string str;
for (int i = 0; i < n; ++i) { //赋值给vec
cin >> num;
cin >> str;
vec[i].first = num;
vec[i].second = str;
}
for (int i = 0; i < n; ++i) {
int min_gap = INT_MAX;
for (char c = 'a'; c <= 'z'; ++c) { //本来想暴力破解,奈何运行时间超出要求,那就遍历26个字母了
char loc = c;
vector<int> subscript; //用于存放字母的下标
for (int j = 0; j < vec[i].first; ++j) {
if ( loc == vec[i].second[j])
subscript.push_back(j); //存入字母下标
}
if (subscript.size() == 0 || subscript.size() == 1 )
continue; //无该字母或只有一个该字母,无须执行之后操作
for (int k = 0; k < subscript.size() - 1; ++k) {
int a = subscript[k + 1] - subscript[k] - 1;
min_gap = min(min_gap, a );
}
int b = subscript[0] + vec[i].first - subscript[subscript.size() - 1] - 1;//环形字母间隔
if (b < min_gap)
min_gap = b;
if (min_gap == 0) //如果存在两相同字母紧挨,则排斥,无须之后继续遍历当下字符串
break;
}
if (min_gap == INT_MAX)
cout << -1 << endl;
else
cout << min_gap << endl;
}
return 0;
}