CF1671E Preorder

题目描述

给你一颗 $2^n-1$ 个节点的完美二叉树,按照以下顺序编号: - 根节点编号为 $1$; - 编号为 $x$ 的节点左儿子为 $2x$,右儿子为 $2x+1$。 每个顶点上有一个字母 `A` 或 `B`,在节点 $x$ 上的字母为 $s_x$。 顶点 $x$ 的先序串 $f(x)$ 定义如下: - 如果 $x$ 是叶子,那么 $x$ 的先序串是 $s_x$; - 否则 $x$ 的先序串是 $s_x+f(l_x)+f(r_x)$,其中 $+$ 表示连接两个字符串,$l_x,r_x$ 代表 $x$ 的左右儿子。 一棵树的先序串是根节点的先序串。 允许执行交换任意一个非叶子节点的左右儿子任意次,求树可能的所有不同先序串的个数, 答案模 $998244353$ 。

输入格式

第一行一个整数 $n$($2\le n\le18$)。 第二行 $2^n-1$ 个字母 `A` 或 `B` 表示 $s_1$ 到 $s_{2^n-1}$,中间没有空格。

输出格式

一个整数表示答案模 $998244353$ 的值。