HX3739. 组合计数题八:非回文串

提交2 通过2
通过率100%
时间限制2000ms
内存限制256MiB

题目描述

题目描述

Alice 有 n 个字符,它们都是英文小写字母,从 1~n 编号,分别为 c1,c2,…,cn。

Bob 准备将这些字符重新排列,组成一个字符串 S。Bob 知道 Alice 有强迫症,所以他打算将 S 组成一个非回文串来折磨 Alice。

现在 Bob 想知道他共有多少种不同的排列字符的方案,能使得 S 是个非回文串。一种排列字符的方案指的是一个 1~n 的排列 pip_i,它所组成的 S=cp1c_{p1}cp2c_{p2}…cpnc_{pn}。

一个字符串是非回文串,当且仅当它的逆序串与原串不同。例如 abcda 的逆序串为 adcba,与原串不同,故 abcda 是非回文串。而 abcba 的逆序串与原串相同,是回文串。

由于最后的结果可能很大,你只需要告诉 Bob 总方案数对 109+710^{9}+7 取模后的值。

输入格式

第一行输入一个整数 nn。

第二行输入一个长度为 nn 的英文小写字母字符串 SS。

输出格式

输出非回文排列方案数对 109+710^9+7 取模后的值。

3
aba
4
8
aabbbbcc
39168
3
abc
6

数据范围与约定

对于 20% 的数据,n≤8;

对于 50% 的数据,n≤20;

另有 30% 的数据,字符只包含 a 和 b;

对于 100% 的数据,3≤n≤2000。