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)