#P1310. B 型字符串问题

B 型字符串问题

B 型字符串问题

时间限制:2s

空间限制:256MB

题目描述

如果一个字符串仅由字符cdmn组成,则称其为 BB 型字符串。给定长度为 kkBB 型字符串 ss,我们必须执行以下操作一次:选择一个非空子串 sls_lsrs_r ,将其完全进行 BB 式修改。

正式地,设 sis_i 为字符串 ss 中的第 ii 个字符。在将起始位置为 sls_l 、结束位置为 srs_r 的子串完全进行 BB 式修改(1lrn1 \le l \le r \le n)后,字符串 ss 将变为长度为 kk 的字符串 tt ,满足下面的等式,其中 tit_i 表示字符串 tt 中的第 ii 个字符:

  • ti=sit_i = s_i,如果 1i<l1 \le i < l 或者 r<inr < i \le n
  • ti=ct_i = 'c',如果 lirl \le i \le r 并且 sl+ri=cs_{l+r-i} = 'c'
  • ti=dt_i = 'd',如果 lirl \le i \le r 并且 sl+ri=ns_{l+r-i} = 'n'
  • ti=mt_i = 'm',如果 lirl \le i \le r 并且 sl+ri=ms_{l+r-i} = 'm'
  • ti=nt_i = 'n',如果 lirl \le i \le r 并且 sl+ri=ds_{l+r-i} = 'd'

在进行操作后,我们能得到多少不同的字符串?

输入格式

有多个测试用例。输入的第一行包含一个整数 TT,表示测试用例的数量。对于每个测试用例:

第一行是一个 BB 型字符串 ss (1s1061 \le |s| \le 10^6)。

保证所有测试用例中字符数 s|s| 的总和不超过 10710^7

输出格式

对于每个测试用例,输出一行,包含一个整数,表示在执行一次操作后可以得到的不同字符串数量。

样例 #1

样例输入 #1

2
cdmn
cm

样例输出 #1

8
2

数据范围

对于 50% 的测试数据,满足 T=1,1s103T=1, 1 \le |s| \le 10^3

对于全部的测试数据,满足 1s1061 \le |s| \le 10^6 ,保证所有测试用例中字符数 s|s| 的总和不超过 10710^7

提示

样例解释:

$$\begin{array}{|c|c||c|c|}\hline \textbf{Substring} & \textbf{Result} & \textbf{Substring} & \textbf{Result} \\ \hline c & cdmn & dm & cmnn \\ \hline d & cnmn & mn & cddm \\ \hline m & cdmn & cdm & mncn \\ \hline n & cdmd & dmn & cdmn \\ \hline cd & ncmn & cdmn & dmnc \\ \hline \end{array} $$

容易发现,在执行操作后,我们可以得到 m 个不同的字符串。