水以下コンテスト
コンテスト日時
2024/03/30 (Sa) 14:00 - 17:05

D - X-word Database

Ceylon
2
s
1024
MB
100

問題文

小文字アルファベットからなる文字列 TT が次の2つの条件を共に満たすとき、その文字列をよい文字列と呼びます。

  • TT の長さは XX 以下
  • 連続する部分列にcyanを含む

文字列 SS が与えられます。辞書順で SS 以下の文字列であり、よい文字列となるようなものは何個存在しますか?

ただし、答えが非常に大きくなることがあるので998244353998244353で割った余りを求めてください。

文字列の辞書順とは?

文字列 A=A1A2AAA = A_1A_2\cdots A_{|A|} が文字列 B=B1B2BBB = B_1B_2\cdots B_{|B|} より辞書順で小さいとは、以下の 22 つのうちどちらかが成り立つ場合にいいます。ここで、 A,B|A|, |B| はそれぞれ A,BA, B の文字列の長さを表します。

  • A<B|A| < |B| かつ A1A2AA=B1B2BAA_1A_2\cdots A_{|A|} = B_1B_2\cdots B_{|A|} である。
  • ある整数 1imin(A,B)1 \leq i \leq \min(|A|, |B|) が存在して、以下の 22 つが成り立つ。
    • A1A2Ai1=B1B2Bi1A_1A_2\cdots A_{i-1} = B_1B_2\cdots B_{i-1}
    • AiA_i のほうが、アルファベット順で BiB_i より前

制約

制約

  • 4X105,X4 \leq X \leq 10^5, X は整数
  • 1SX1 \leq |S| \leq X
  • SS は小文字アルファベットからなる文字列

部分点

以下の条件を満たすテストケースにすべて正解したとき、記載された点数が与えられる。

  1. (20点) X8X \leq 8
  2. (40点) X103,SX \leq 10^3, Szのみからなる長さ XX の文字列
  3. (40点) 追加の制約なし

部分点2 のみ に正解し、部分点1に正解しないコードを提出した場合、得点は40点となることに注意。

入力

入力は、以下の形式で標準入力から与えられる。

XX
SS

出力

答えを 998244353998244353 で割ったあまりを1行で出力せよ。

入力例 1
5 cyanc
出力例 1
7

よい文字列は、

  • acyan
  • bcyan
  • ccyan
  • cyan
  • cyana
  • cyanb
  • cyanc
    77 つです。

このサンプルは部分点1の制約を満たします。

入力例 2
8 database
出力例 2
694119

このサンプルは部分点1の制約を満たします。

入力例 3
10 zzzzzzzzzz
出力例 3
239563112

このサンプルは部分点2の制約を満たします。

入力例 4
1599 graybrowngreencyan
出力例 4
433406175