#agc050c. [agc050_c]Block Game

[agc050_c]Block Game

问题描述

有一个无限延伸到两个方向的细胞序列。你和 Snuke 玩如下游戏:

  • 裁判选择一个由 BS 组成的字符串 tt,称为回合字符串,并将其展示给两位玩家。
  • 首先,Snuke 站在其中一个细胞上。
  • 然后,对于每个 i=1,...,ti = 1, ..., |t|,按照顺序进行如下操作:
    • 如果第 ii 个字母是 B,则轮到你行动。你选择一个既不包含其他方块也不包含 Snuke 的细胞,并在该细胞上放置一个方块。之后,如果两个与 Snuke 当前所在细胞相邻的细胞都被方块占据,你赢得游戏并游戏结束。
    • 如果第 ii 个字母是 S,则轮到 Snuke 行动。他可以移动到相邻的未被方块占据的细胞上,也可以不进行任何操作。
  • 如果游戏仍未结束,Snuke 获胜并游戏结束。

给定一个由 BS? 组成的字符串 ss。如果 ss 中包含 QQ?,则有 2Q2^Q 种替换每个 ?BS 的方式,并得到一个回合字符串。在这 2Q2^Q 个字符串中,如果玩家都采取最优策略,有多少种方式会导致你获胜?将答案对 998,244,353998,244,353 取模。

约束条件

  • 1s1061 \leq |s| \leq 10^6
  • ssBS? 组成。

输入

输入以以下格式从标准输入给出:

ss

输出

打印答案。


示例输入1

BSSBS

示例输出1

0

你负责第 1 和第4次行动,而 Snuke 负责第 2、3 和第 5 次行动。在这种情况下,如果双方玩家都采取最优策略,结果是 Snuke 获胜。


示例输入2

?S?B????S????????B??????B??S??

示例输出2

16777197