

Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 500 点
問題文
英小文字からなる二つの文字列 s, t が与えられます。次の条件を満たす整数 i (1 \leq i \leq 10^{100} \times |s|) が存在するか判定し、存在する場合はそのような i の最小値を求めてください。
- s を 10^{100} 個連結して得られる文字列を s' とする。t は、文字列 {s'}_1{s'}_2\ldots{s'}_i (s' の先頭 i 文字) の部分列である。
注記
- 文字列 a の部分列とは、a から 0 文字以上を削除して残った文字を相対的な順序を保ったまま連結して得られる文字列です。例えば、
contest
の部分列にはnet
,c
,contest
などがあります。
制約
- 1 \leq |s| \leq 10^5
- 1 \leq |t| \leq 10^5
- s, t は英小文字からなる。
入力
入力は以下の形式で標準入力から与えられる。
s t
出力
条件を満たす整数 i が存在する場合はそのような i の最小値を、存在しない場合は -1
を出力せよ。
入力例 1
contest son
出力例 1
10
t = son
は文字列 contestcon
(s' = contestcontestcontest...
の先頭 10 文字) の部分列であるため、i = 10 は条件を満たします。
一方で、t は文字列 contestco
(s' の先頭 9 文字) の部分列ではないため、i = 9 は条件を満たしません。
同様に、8 以下の任意の整数も条件を満たしません。よって、条件を満たす整数 i の最小値は 10 です。
入力例 2
contest programming
出力例 2
-1
t = programming
は s' = contestcontestcontest...
の部分列ではありません。よって、条件を満たす整数 i は存在しません。
入力例 3
contest sentence
出力例 3
33
ここにそのようなケースを置くことはできませんが、答えは 32 bit 整数に収まらない可能性があるのでご注意ください。
Score : 500 points
Problem Statement
Given are two strings s and t consisting of lowercase English letters. Determine if there exists an integer i satisfying the following condition, and find the minimum such i if it exists.
- Let s' be the concatenation of 10^{100} copies of s. t is a subsequence of the string {s'}_1{s'}_2\ldots{s'}_i (the first i characters in s').
Notes
- A subsequence of a string a is a string obtained by deleting zero or more characters from a and concatenating the remaining characters without changing the relative order. For example, the subsequences of
contest
includenet
,c
, andcontest
.
Constraints
- 1 \leq |s| \leq 10^5
- 1 \leq |t| \leq 10^5
- s and t consists of lowercase English letters.
Input
Input is given from Standard Input in the following format:
s t
Output
If there exists an integer i satisfying the following condition, print the minimum such i; otherwise, print -1
.
Sample Input 1
contest son
Sample Output 1
10
t = son
is a subsequence of the string contestcon
(the first 10 characters in s' = contestcontestcontest...
), so i = 10 satisfies the condition.
On the other hand, t is not a subsequence of the string contestco
(the first 9 characters in s'), so i = 9 does not satisfy the condition.
Similarly, any integer less than 9 does not satisfy the condition, either. Thus, the minimum integer i satisfying the condition is 10.
Sample Input 2
contest programming
Sample Output 2
-1
t = programming
is not a substring of s' = contestcontestcontest...
. Thus, there is no integer i satisfying the condition.
Sample Input 3
contest sentence
Sample Output 3
33
Note that the answer may not fit into a 32-bit integer type, though we cannot put such a case here.