KSDUPC 2024
コンテスト日時
2024/09/15 (Su) 14:00 - 15:40

I - 無限反復横跳び

Ceylon
2
s
1024
MB
400

問題文

$N$ 個のマスが横一列に並んでいます。
左から $i$ 番目のマスをマス $i$ とします。
英小文字・英大文字からなる文字列 $S$ が与えられ、マス $i$ には文字 $S_i$ が書かれています。
高橋くんははじめマス $1$ にいます。
高橋くんはいまいるマスに書かれている文字と異なる文字が書かれたマスを $1$ つ選び、そのマスに移動することを $K$ 回繰り返します。
より厳密には、マス $i$ にいるとき、$S_i≠S_j \ (1 ≤ j ≤ N)$ を満たすマス $j$ に移動します。


$K$ 回の移動後、文字 $T$ が書かれたマスにいる移動方法が何通りあるかを $998244353$ で割った余りを求めてください。
ただし、$2$ つの移動方法が異なるとは、ある $1≤ i ≤ K$ が存在して、$i$ 回目の移動後にいるマスが異なることを指します。

制約

  • $2 ≤ N ≤ 5×10^5$
  • $1 ≤ K ≤ 10^{18}$
  • $|S| = N$
  • $|T| = 1$
  • $S$ と $T$ は英小文字・英大文字からなる文字列
  • $S$ に登場する文字の種類は $2$ 以上
  • 入力される数値は全て整数

部分点

この問題には部分点が設定されています。
以下の条件を満たすテストケースにすべて正解したとき、記載された点数が与えられます。

  1. (250点) $1 ≤ K ≤ 2×10^{5}$
  2. (400点) 追加の制約なし

入力

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

$N \ K$
$S$
$T$

出力

答えを $998244353$ で割った余りを求めてください。

入力例 1
4 2 easy a
出力例 1
2

マス 1 から 2 回の移動で $a$ が書かれたマスに移動する方法は

  • マス 1 → マス 3 → マス 2
  • マス 1 → マス 4 → マス 2

の $2$ 通りです。
マス 1 → マス 2 → マス 2 のように、同じ文字が書かれたマスには移動できないことに注意してください。

入力例 2
8 3 fearless s
出力例 2
70

同じ文字が複数含まれることがあります。

入力例 3
10 100 UnForGiven A
出力例 3
0
提出
C++23 (g++ 12.2.0)