CF1822E.Making Anti-Palindromes
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a string s , consisting of lowercase English letters. In one operation, you are allowed to swap any two characters of the string s .
A string s of length n is called an anti-palindrome, if s[i]=s[n−i+1] for every i ( 1≤i≤n ). For example, the strings "codeforces", "string" are anti-palindromes, but the strings "abacaba", "abc", "test" are not.
Determine the minimum number of operations required to make the string s an anti-palindrome, or output −1 , if this is not possible.
输入格式
The first line contains a single integer t ( 1≤t≤104 ) — the number of test cases. The description of the test cases follows.
Each test case consists of two lines. The first line contains a single integer n ( 1≤n≤2⋅105 ) — the length of the string s .
The second line contains the string s , consisting of n lowercase English letters.
The sum of n over all test cases does not exceed 2⋅105 .
输出格式
For each test case, output a single integer — the minimum number of operations required to make the string s an anti-palindrome, or −1 if this is not possible.
输入输出样例
输入#1
10 10 codeforces 3 abc 10 taarrrataa 10 dcbdbdcccc 4 wwww 12 cabbaccabaac 10 aadaaaaddc 14 aacdaaaacadcdc 6 abccba 12 dcbcaebacccd
输出#1
0 -1 1 1 -1 3 -1 2 2 2
说明/提示
In the first test case, the string "codeforces" is already an anti-palindrome, so the answer is 0 .
In the second test case, it can be shown that the string "abc" cannot be transformed into an anti-palindrome by performing the allowed operations, so the answer is −1 .
In the third test case, it is enough to swap the second and the fifth characters of the string "taarrrataa", and the new string "trararataa" will be an anti-palindrome, so the answer is 1 .