atcoder#ABC272F. [ABC272F] Two Strings

[ABC272F] Two Strings

配点 : 500500

問題文

長さ NN の英小文字からなる文字列 S,TS,T が与えられます。

文字列 XX と整数 ii に対し、f(X,i)f(X,i)XX に対して以下の操作を ii 回行い得られる文字列とします。

  • XX の先頭の文字を削除し、同じ文字を XX の末尾に挿入する。

0i,jN10 \le i,j \le N-1 を満たす正整数の組 (i,j)(i,j) のうち、辞書順で f(S,i)f(S,i)f(T,j)f(T,j) より小さいか同じであるものの個数を求めてください。

辞書順とは?

辞書順とは簡単に説明すると「単語が辞書に載っている順番」を意味します。より厳密な説明として、英小文字からなる相異なる文字列 S,TS, T の大小を判定するアルゴリズムを以下に説明します。

以下では「 SSii 文字目の文字」を SiS_i のように表します。また、 SSTT より辞書順で小さい場合は S<TS \lt T 、大きい場合は S>TS \gt T と表します。

  1. S,TS, T のうち長さが大きくない方の文字列の長さを LL とします。i=1,2,,Li=1,2,\dots,L に対して SiS_iTiT_i が一致するか調べます。
  2. SiTiS_i \neq T_i である ii が存在する場合、そのような ii のうち最小のものを jj とします。そして、SjS_jTjT_j を比較して、SjS_jTjT_j よりアルファベット順で小さい場合は S<TS \lt T 、そうでない場合は S>TS \gt T と決定して、アルゴリズムを終了します。
  3. SiTiS_i \neq T_i である ii が存在しない場合、SSTT の長さを比較して、SSTT より短い場合は S<TS \lt T 、長い場合は S>TS \gt T と決定して、アルゴリズムを終了します。

制約

  • 1N2×1051 \le N \le 2 \times 10^5
  • S,TS,T は英小文字からなる長さ NN の文字列
  • NN は整数

入力

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

NN

SS

TT

出力

答えを出力せよ。

3
adb
cab
4

条件を満たす (i,j)(i,j) の組は (0,0),(0,2),(2,0),(2,2)(0,0),(0,2),(2,0),(2,2)44 個があります。

(i,j)=(1,2)(i,j)=(1,2) は、f(S,i)=f(S,i)=dba,f(T,j)=,f(T,j)=bca であるため条件を満たしません。

10
wsiuhwijsl
pwqoketvun
56