TSG LIVE! 14 プログラミングコンテスト
コンテスト日時
2025/05/25 (Su) 16:00 - 17:40

K - kitaku 2

Flavor
2
s
1024
MB
600

問題文

英小文字からなる文字列 $S$ が与えられます。 $S$ に対して以下の操作を任意の回数行ったとき、操作後の文字列としてあり得るものの種類数を $998244353$ で割った余りを求めてください。

  • $S$ に含まれる連続するとは限らない部分文字列 ki を $1$ つ選び、以下のいずれかを行う
    • kO(大文字) に置き換え、 i を削除する
    • iO(大文字) に置き換え、 k を削除する

ただし、操作の方法が異なっていても操作後の文字列が同じ場合は $1$ 種類と数えます。(ただし、o(小文字)と O(大文字) は区別されます)

連続するとは限らない部分文字列の定義については J: kitaku を参照してください。

制約

  • $S$ は英小文字からなる文字列
  • $1\le|S|\le1000$

入力

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

$S$

出力

答えを $1$ 行で出力せよ。

入力例 1
kinki
出力例 1
6

任意の回数の操作で、kinki, kinO, inkO, Oink, Onki, OnOを得ることができます。
操作は1回も行わなくても構いません。

入力例 2
kkioii
出力例 2
13
入力例 3
kankeinaikinisurunayarudake
出力例 3
121
入力例 4
sakkiikinoiikakiwoikkinikakikondeukiukikibunmouikkaikuitaina
出力例 4
401422434
提出
C++23 (g++ 12.2.0)