#abc456d. Not Adjacent 2

Not Adjacent 2

题目描述

给定一个由字符 a、b、c 组成的字符串 SS。

求 SS 中满足任意两个相邻字符都不相同的非空子序列的数量,结果对 998244353998244353 取模。

即使两个子序列作为字符串是相同的,只要它们来自 SS 中的不同位置,就被视为不同的子序列。

什么是子序列? SS 的子序列是从 SS 中删去零个或多个字符后,将剩余字符按原顺序拼接得到的字符串。例如,ab、ac 是 abc 的子序列,但 ca、bb 不是 abc 的子序列。

输入格式

输入只有一行,一个字符串 SS。

输出格式

输出一行,表示满足条件的子序列数量对 998244353998244353 取模的结果。

abbc
11
cabcabcbcaccacbcbcaabacbacaabccacbccbcacbacbacabcacabcaccaaaaabababcbabacaccabbcacbcbcbcababcbcbabca
378217423

数据范围与提示

样例 1 解释: 满足条件的子序列共 1111 个:

  • a(第 11 个字符)
  • b(第 22 个字符)
  • b(第 33 个字符)
  • c(第 44 个字符)
  • ab(第 1,21,2 个字符)
  • ab(第 1,31,3 个字符)
  • ac(第 1,41,4 个字符)
  • bc(第 2,42,4 个字符)
  • bc(第 3,43,4 个字符)
  • abc(第 1,2,41,2,4 个字符)
  • abc(第 1,3,41,3,4 个字符)

注意:第 22 和第 33 个子序列内容相同但位置不同,视为不同子序列。

样例 2 解释: 输出答案对 998244353998244353 取模的结果。

对于 100%100\% 的数据,SS 是长度在 11 到 3×1053 \times 10^5 之间的由 a、b、c 组成的字符串。