#P15225. [SWERC 2017] Kabobs

[SWERC 2017] Kabobs

说明

Anna 想开一家神奇的餐厅“糖果山”,只提供糖果烤肉串:这是一种将各种食物块串在签子上的美食,从尖端吃到根部。

和其他烤肉串爱好者一样,当 Anna 在烤肉串中吃到连续食物类型的模式时,她期望在烤肉串的后续部分吃到另一个模式。例如,一旦她吃到一个苹果块后立即吃到一个香蕉块,她期望在剩余部分有薄荷叶后立即吃到巧克力块。如果她在剩余烤肉串块中的任意位置找到这个薄荷-巧克力模式,她就会感到满意。

以下是一个 Anna 喜欢的烤肉串示例:

苹果-香蕉-西瓜-李子-西瓜-李子-西瓜-薄荷-巧克力

或用图形表示:

:::align{center} :::

Anna 为新餐厅写下了她完美的烤肉串模式集,但她担心这些规则会产生太多可能的烤肉串类型。这个模式集被写为一个 规则集,其中每条规则的形式为“bb 隐含 ee 之后”,其中 bbee 是非空字符序列,代表食物块。形式为 b>eb > e 的规则,其中 b=b1bkb = b_1 \ldots b_ke=e1ele = e_1 \ldots e_l,意味着如果在烤肉串中遇到模式 bb,那么烤肉串在之后的某个点也应该包含 ee。每个 bi+1b_{i+1} 必须立即跟随 bib_i 以触发规则,类似地每个 ej+1e_{j+1} 必须立即跟随 eje_j 以满足规则,但 bkb_ke1e_1 不需要连续。同一个食物块不能在一条规则中出现多次(即不存在 i,ji, j 使得 ej=bie_j = b_i,也不存在 iji \neq j 使得 bi=bjb_i = b_jei=eje_i = e_j),但一个食物块可以出现在多条规则中。

注意,如果在烤肉串中 bb 出现多次,每个都需要有 ee 在之后。这可以是同一个 ee,只要这个 ee 出现在所有 bb 之后。

在规则集中,规则由 ‘|’ 分隔,形式为 u>vu > v,意味着每个模式 uu 隐含一个模式 vv 在之后。uuvv 是由字母数字字符组成的单词,且同一个字符不能在一条规则中出现两次。例如,规则集 “AB>X | R>A | T>B” 描述了三条规定:

  • 每个 AB 之后必须有一个 X;
  • 每个 R 之后必须有一个 A;
  • 每个 T 之后必须有一个 B。

使用这个规则集,烤肉串 SBSSBREAABXBAABXBARRATBTBRTABX 是有效的;但 RATTABABXAB 无效。

Anna 问你,有多少个给定大小的烤肉串与她的规则集兼容。

输入格式

  • 第一行包含一个整数 KK(烤肉串的大小),后跟一个空格和一个非空字符串 SS,由字母数字字符(‘A’ 到 ‘Z’、‘a’ 到 ‘z’ 和 ‘0’ 到 ‘9’)组成,表示烤肉串中可使用的元素(SS 中字符不重复)。
  • 第二行包含一个非空字符串 RR,其中没有空格,表示如上所述的规则集。RR 中的模式仅由 SS 中的字符组成。

输出格式

一个整数:满足 RR 中所有规则的长度为 KK 的烤肉串数量,对 1000000010\,000\,000 取模。

4 ABC
A>B|B>C|CB>A
9

提示

数据范围

输入满足 1K5001 \leq K \leq 5003R603 \leq |R| \leq 60

翻译由 DeepSeek 完成