n = int(input())
for i in range(n):
lens = int(input())
arr = list(input())
set_arr = set(arr)
# 记录每种字母的所有索引
index = {}
for i in range(lens):
if arr[i] not in index.keys():
index[arr[i]] = [i]
else:
if i - index[arr[i]][-1] == 0 or i - index[arr[i]][-1] == n - 1:
print(0)
break
index[arr[i]].append(i)
flag = 0 # 记录字母数量为1的个数
minn = lens # 初始化为最大
for arr in index.values():
if len(arr) == 1: # 字母索引个数为1
flag += 1
continue
if lens == 2: # 字符长度为2,但是字母的索引个数不为1,说明是相同的字母
minn = 0
continue
if len(arr) == 2:
sub_min = min(lens - arr[1] + arr[0] - 1,arr[1] - arr[0] - 1)
minn = min(sub_min,minn)
continue
arr0 = arr[0] # 保留第一个索引
arr1 = arr[-2] # 保留倒数第二个索引
for i in range(len(arr)):
if i == len(arr) - 1:
arr[i] = min(lens - arr[i] + arr0 - 1,arr[i] - arr[-2] - 1) # 获取当前字母与相隔字母的最小距离
else:
arr[i] = min(lens - arr[i + 1] + arr[i] - 1,arr[i + 1] - arr[i] - 1)
minn = min(min(arr),minn)
if flag == len(set_arr):
print(-1)
else:
print(minn)