const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const tokens: string[] = [];
rl.on('line', function (line) {
tokens.push(line.trim())
});
rl.on('close', function () {
for (let i = 2, len = tokens.length; i < len; i += 2) {
// 存储字母出现位置,key 是字母,value 是位置数组
const map = new Map<string, number[]>();
let ans = -1, minOps = Number.MAX_VALUE;
for (let j = 0, sLen = tokens[i].length; j < sLen; ++j) {
if(!map.has(tokens[i][j])){
map.set(tokens[i][j], [j]);
} else {
const target = map.get(tokens[i][j]);
// 由于手串是环形的,关键在于对比最近相同字母按顺序到达更近,还是从尾部到达第一个相同字母更近
ans = minOps = Math.min(minOps, j - target[target.length - 1] - 1, sLen - j - 1 + target[0]);
target.push(j);
}
}
console.log(ans);
}
});