SRM398 Div2 900

問題

作りたい文字列はmatchStringで与えられる。パズル文字列はmatchWordsとして配列が与えられる。
配列の大きさはmatchStringの長さと等しい。
matchWordsの文字列をそれぞれ上から並べた時、その文字列配列のどこかを縦に読んでmatchStringの文字列を作りたい。そのために文字列配列の文字列はそれぞれ右に何文字分かシフトすることができる。目的の文字列を作るために必要なシフト回数を答える。

考え方

全探索。
まず、どの縦ライン(i文字目)でmatchStringを作るかでループ。
すべての文字列(j個目の文字列)に対して、i文字目にmatchString[j]がくるための最小シフト回数を数えて合計を求める。
作れる場合はすべての縦ラインの中で最小のシフト回数を返す。