/
実行時間制限: 2 sec / メモリ制限: 1024 MiB
配点 : 100 点
問題文
長さ 3 以上の文字列 X は以下の 2 つの条件を満たすとき、tatesoto 文字列であるといいます。
- X の先頭の 3 文字は回文である。
- X の末尾の 3 文字は回文である。
例えば、tatesoto は tatesoto 文字列ですが、jastaway は tatesoto 文字列ではありません。
英小文字からなる文字列 S が与えられます。 S の長さ 3 以上 K 以下の部分文字列のうち、tatesoto 文字列であるようなものの個数を求めてください。 ただし、同じ文字列でも取り出す場所が異なる場合、別の部分文字列として数えます。
T 個のテストケースが与えられるので、それぞれについて答えを求めてください。
制約
- 1 \leq T \leq 10^5
- S は英小文字からなる文字列
- 3 \leq |S| \leq 5 \times 10^5
- 3 \leq K \leq |S|
- すべてのテストケースについての |S| の総和は 5 \times 10^5 以下
- 入力される数値はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
T
\mathrm{case}_1
\mathrm{case}_2
\vdots
\mathrm{case}_T
各テストケースは以下の形式で与えられる。
S K
出力
答えを合計 T 行で出力せよ。 t 行目には、t 番目のテストケースの答えを出力せよ。
入力例 1
6 bogosort 4 tatesoto 8 jastaway 6 soryuusi 7 zzzzzzzzzz 8 welcometobogosortprogrammingcontest 21
出力例 1
2 3 1 0 33 6
1 つ目のテストケースについて、以下の 3 つの部分文字列が tatesoto 文字列となります。
- S の 2 \sim 4 文字目を抜き出した
ogo - S の 4 \sim 6 文字目を抜き出した
oso - S の 2 \sim 6 文字目を抜き出した
ogoso
このうち、長さが 4 以下であるものは最初の 2 つです。
2 つ目のテストケースについて、以下の 3 つの部分文字列が tatesoto 文字列となります。
- S の 1 \sim 3 文字目を抜き出した
tat - S の 6 \sim 8 文字目を抜き出した
oto - S の 1 \sim 8 文字目を抜き出した
tatesoto
これら 3 つとも、長さは 8 以下です。
3 つ目のテストケースについて、以下の 1 つの部分文字列が tatesoto 文字列となります。
- S の 5 \sim 7 文字目を抜き出した
awa
この部分文字列の長さは 3 であり、 6 以下です。
4 つ目のテストケースについて、S の部分文字列で tatesoto 文字列となるものはありません。