CF17C Balance
题目描述
1. 选择两个相邻字符,将第一个字符替换成第二个。
2. 选择两个相邻字符,将第二个字符替换成第一个。
这样,通过任意多次的操作,可以得到许多不同的串。为了追求字符的平衡,我们要求 $\texttt{a},\texttt{b},\texttt{c}$ 三种字符在字符串中出现的次数两两之差都不能大于 $1$。
你的任务是,统计给定字符串通过任意多次的操作,能够得到的不同的平衡串的个数,对 $51123987$ 取模。
给定的字符串长度不超过 $150$。
输入格式
输入文件包含两行。
第一行包含一个正整数 $n$,表示字符串长度。
第二行包含一个长度为 $n$ 的字符串。
输出格式
输出共一行,包含一个正整数,表示能够得到的平衡串的数量。
由于答案可能很大,因此输出时要对 $51123987$ 取模。
说明/提示
In the first sample it is possible to get $ 51 $ different strings through the described operations, but only $ 7 $ of them are balanced: «abca», «bbca», «bcca», «bcaa», «abcc», «abbc», «aabc». In the second sample: «abbc», «aabc», «abcc». In the third sample there is only one balanced string — «ab» itself.