#E0022. 反回文串

反回文串

题目描述

给定一个长度为 nn 的字符串 ss,我们用 s[i]s[i] 表示字符串 ss 中的第 ii 个字符(1in1 \le i \le n)。若对于任意 1in1 \le i \le n 均有 s[i]s[ni+1]s[i] \ne s[n - i + 1],则我们称字符串 ss 为一个 反回文串

举例来说:字符串 quanjunzplhello 都是反回文串;字符串 abacabcabctest 都不是反回文串。

你可以对字符串 ss 进行任意次操作,每次操作,你可以选择字符串中的两个字符,并交换这两个字符。

你希望使用最少的操作次数,使字符串 ss 变成一个反回文串。

输入格式

输入的第一行包含一个整数 n(1n2105)n(1 \le n \le 2 \cdot 10^5),表示字符串长度。

第二行包含一个长度为 nn 的字符串 ss,字符串 ss 仅由小写英文字母组成。

输出格式

如果无论怎么交换字符都无法使字符串 ss 变成一个反回文串,输出 1-1

否则,输出一个整数,表示使字符串 ss 变成一个反回文串所需的最少操作次数。

4
wwww
-1
12
cabbaccabaac
3

说明/提示

样例解释

样例1:无论怎么操作,字符串都是 wwww,无法变成一个反回文串。

样例2:交换 s1s_1s2s_2,再交换 s3s_3s6s_6,再交换 s4s_4s5s_5,字符串变为 accabbcabaac,是一个反回文串。

数据规模与约定

  • 对于 30%30\% 的数据,n20n \le 20
  • 对于 60%60\% 的数据,n2000n \le 2000
  • 对于 100%100\% 的数据,1n21051 \le n \le 2 \cdot 10^5,且字符串 ss 仅由小写英文字母组成