問題
“O”(大文字のオー)と“X”(大文字のエックス)により構成される長さl(2 ≦ l ≦ 16)の文字列が二つ与え られたとき,それらの間の類似度を以下のように定義します:
(1)二つの文字列が完全に一致する場合,類似度を 10 とします.
(2)片方の文字列を左右反転させると他方に一致する場合,類似度を 5 とします.
(3)片方の文字列を k 回(1 ≦ k ≦ l - 1)右シフトすると他方に一致するという場合,類似度を 3 とします.(右シフトとは,文字列の中で一番右にある文字を一番左へ移動し,それ以外の文字の位置を一文字分だけ右へ移動することによって新たな文字列を得る操作を意味します.)
(4)片方の文字列中の “O” を “X” に,“X” を “O” にそれぞれ置き換えた文字列が他方に一致する場合,類似
度を 1 とします.
(5)以上のいずれにも該当しない場合,類似度を 0 とします.
ただし,複数の条件を同時に満たす場合は,類似度が高い方を優先するものとします.例えば,それぞれ “OOOXXXOX” と “OOOXXXOX” の類似度は 10,“XXXOOOOO” と “OOOOOXXX” の類似度は 5,“OXOOOOOO” と “OOOOOXOO” の類似度は 3,“OOOXOXOO” と “XXXOXOXX” の類似度は 1,“OXXXOOOX” と “XXOOXOXX” の類似度は 0 となります.
n 組(1 ≦ n ≦ 1000)の文字列対が与えられたとき,各文字列対における類似度の合計値を求めて出力するプログラムを作成して下さい.
入力では一行目に文字列の長さ l,二行目に文字列対の数 n がそれぞれ与えられます.そして,三行目以降で文字列対が空白文字で区切られて一行に一組ずつ,全部で n 行与えられます.文字列の前後に(二つの区切りに用いられるものを除いて)空白文字が登場することはありません.
出力では類似度の合計値を出力して下さい.
実行例
入力
8 5 OOOXXXOX OOOXXXOX XXXOOOOO OOOOOXXX OXOOOOOO OOOOOXOO OOOXOXOO XXXOXOXX OXXXOOOX XXOOXOXX
出力
19