小彩的字符串交换
题号:NC303419
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红喜欢 ,小紫喜欢 ,小彩喜欢
现在有一个仅由  组成的长为  的字符串,小红准备取一个长为  的子串,为了让每个人都满意,这个子串中需要同时包含  这三个数字。
为此,小紫可以进行任意次如下操作:
\hspace{23pt} \bullet 选择字符串中的任意两个元素,交换他们的位置。
小彩想知道,最少需要多少次操作才能让字符串中存在符合要求的子串?

【名词解释】
\hspace{15pt}子串:从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

输入描述:

每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10\right) 代表数据组数,每组测试数据描述如下:
第一行输入一个整数 n\left(3 \leqq n \leqq 2\times10^5 \right)
第二行输入一个长为  的字符串。

输出描述:

对于每一组测试数据,新起一行。如果操作无法达成要求,请输出 ,否则输出可能的最少操作次数。
示例1

输入

复制
2
6
112223
5
11122

输出

复制
1
-1

说明

对于第一组数据,一种可能的操作方法为 112223