import sys

T = int(sys.stdin.readline().strip())

for _ in range(T):
    n = int(sys.stdin.readline().strip())
    string = list(sys.stdin.readline().strip())

    # 特殊情况
    if n == 2 and string[0] != string[1]:
        print(-1)
        continue
    
    # 26个字母各自的最小距离(环)
    distance = [float('inf') for _ in range(26)]
    # 上一个下标
    index_pre = [-1 for _ in range(26)]
    # 第一个下标
    index_first = [-1 for _ in range(26)]
    # 遍历
    for i in range(n):
        chr_ord = ord(string[i]) - 97
        # 第一次遇到
        if index_pre[chr_ord]  == -1:
            index_first[chr_ord] = i
        else:
            #算距离
            distance[chr_ord] = min(distance[chr_ord], i - index_pre[chr_ord] - 1, n - i + index_first[chr_ord] - 1)
        index_pre[chr_ord] = i
    
    if min(distance) == float('inf'):
        print(-1)
    else:
        print(min(distance))




什么玩意儿让我写半天??