100 atcoder#ABC138E. [ABC138E] Strings of Impurity

[ABC138E] Strings of Impurity

配点 : 500500

問題文

英小文字からなる二つの文字列 s,ts, t が与えられます。次の条件を満たす整数 ii (1i10100×s)(1 \leq i \leq 10^{100} \times |s|) が存在するか判定し、存在する場合はそのような ii の最小値を求めてください。

  • ss1010010^{100} 個連結して得られる文字列を ss' とする。tt は、文字列 s1s2si{s'}_1{s'}_2\ldots{s'}_i (ss' の先頭 ii 文字) の部分列である。

注記

  • 文字列 aa の部分列とは、aa から 00 文字以上を削除して残った文字を相対的な順序を保ったまま連結して得られる文字列です。例えば、contest の部分列には net, c, contest などがあります。

制約

  • 1s1051 \leq |s| \leq 10^5
  • 1t1051 \leq |t| \leq 10^5
  • s,ts, t は英小文字からなる。

入力

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

ss

tt

出力

条件を満たす整数 ii が存在する場合はそのような ii の最小値を、存在しない場合は -1 を出力せよ。

contest
son
10

t=t = son は文字列 contestcon (s=s' = contestcontestcontest... の先頭 1010 文字) の部分列であるため、i=10i = 10 は条件を満たします。

一方で、tt は文字列 contestco (ss' の先頭 99 文字) の部分列ではないため、i=9i = 9 は条件を満たしません。

同様に、88 以下の任意の整数も条件を満たしません。よって、条件を満たす整数 ii の最小値は 1010 です。

contest
programming
-1

t=t = programmings=s' = contestcontestcontest... の部分列ではありません。よって、条件を満たす整数 ii は存在しません。

contest
sentence
33

ここにそのようなケースを置くことはできませんが、答えは 3232 bit 整数に収まらない可能性があるのでご注意ください。