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)