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.