Score : $1500$ points
Shik's job is very boring. At day $0$, his boss gives him a string $S_0$ of length $N$ which consists of only lowercase English letters. In the $i$-th day after day $0$, Shik's job is to copy the string $S_{i-1}$ to a string $S_i$. We denote the $j$-th letter of $S_i$ as $S_i[j]$.
Shik is inexperienced in this job. In each day, when he is copying letters one by one from the first letter to the last letter, he would make mistakes. That is, he sometimes accidentally writes down the same letter that he wrote previously instead of the correct one. More specifically, $S_i[j]$ is equal to either $S_{i-1}[j]$ or $S_{i}[j-1]$. (Note that $S_i[1]$ always equals to $S_{i-1}[1]$.)
You are given the string $S_0$ and another string $T$.
Please determine the smallest integer $i$ such that $S_i$ could be equal to $T$. If no such $i$ exists, please print -1
.
The input is given from Standard Input in the following format:
$N$ $S_0$ $T$
Print the smallest integer $i$ such that $S_i$ could be equal to $T$. If no such $i$ exists, print -1
instead.
5 abcde aaacc
2
$S_0$ = abcde
, $S_1$ = aaccc
and $S_2$ = aaacc
is a possible sequence such that $S_2 = T$.
5 abcde abcde
0
4 acaa aaca
2
5 abcde bbbbb
-1
配点 : $1500$ 点
シックの仕事はコピー取りです。ある日、シックは上司から英小文字からなる長さ $N$ の文字列 $S_0$ を受け取りました(この日を $0$ 日目とします)。これ以降、$i$ 日目の仕事は、文字列 $S_{i-1}$ を $S_i$ にコピーすることです。以下、$S_i$ の $j$ 番目の文字を $S_i[j]$ と表します。
シックはまだこの仕事に慣れていません。毎日、文字列を先頭の文字から順に書き写していくのですが、正しい文字の代わりに誤って直前に書いた文字と同じ文字を書いてしまうことがあります。すなわち、$S_i[j]$ は $S_{i-1}[j]$ または $S_{i}[j-1]$ のどちらかと等しくなります。(ただし、文字列の先頭の文字を書き間違えることはありません。すなわち、$S_i[1]$ は必ず $S_{i-1}[1]$ と等しくなります。)
二つの文字列 $S_0$ と $T$ が与えられます。$S_i$ が $T$ と等しくなる可能性があるような最小の整数 $i$ を求めてください。もしそのような $i$ が存在しなければ、代わりに -1
と答えてください。
入力は以下の形式で標準入力から与えられる。
$N$ $S_0$ $T$
$S_i$ が $T$ と等しくなる可能性のあるような $i$ が存在するならば、そのような $i$ のうち最小のものを出力せよ。そのような $i$ が存在しなければ、代わりに -1
と出力せよ。
5 abcde aaacc
2
$S_0$ = abcde
, $S_1$ = aaccc
, $S_2$ = aaacc
のように、$S_2 = T$ となる可能性が存在します。
5 abcde abcde
0
4 acaa aaca
2
5 abcde bbbbb
-1