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);
  }
});