B - 高橋くんと文字列操作
解説
/
実行時間制限: 2 sec / メモリ制限: 256 MB
問題文
高橋くんは文字列 s を持っており、文字列 t を作りたいと思っています。 高橋くんは、文字列の末尾の 1 文字を先頭に追加し、末尾の 1 文字を削除するという操作を文字列 s に行うことで、文字列 s を文字列 t にしたいと考えています。
最小で何回この操作を行えば、文字列 s を文字列 t にできるでしょうか?最小の操作回数を出力するプログラムを書いてください。この操作では文字列 s を文字列 t に変換することができない場合、-1 と出力してください。
入力
入力は以下の形式で標準入力から与えられる。
s t
- 1 行目には、高橋くんが持っている文字列 s (1 ≦ \|s\| ≦ 1,000) が与えられる。ただし、 \|s\| は文字列 s の長さを表す。s は半角小文字アルファベットa-zのみからなる。
- 2 行目には、高橋くんが作りたい文字列 t (1 ≦ \|t\| ≦ 1,000) が与えられる。t は半角小文字アルファベットa-zのみからなる。
出力
1 行目に、高橋くんが文字列 s を文字列 t に変換するための操作の最小回数を出力せよ。
行末の改行を忘れないこと。
入力例1
abcd dabc
出力例1
1
abcd
の末尾の文字を先頭に追加すると、
dabcd
となり、ここから末尾の文字を削除すると、
dabc
となります。
よって、1 回の操作で s は t に等しくなります。
入力例2
abcabcabc bcabcabca
出力例2
2
問題文中の操作を s に 2 回行うと t と等しくなります。 5 回、8 回行っても t と等しくなりますが、最小のものを求める必要があります。
入力例3
aaa a
出力例3
-1
入力例4
cab cab
出力例4
0