AT_abc332_d [ABC332D] Swapping Puzzle

Description

[problemUrl]: https://atcoder.jp/contests/abc332/tasks/abc332_d $ H $ 行 $ W $ 列の $ 2 $ つのグリッド A, B が与えられます。 $ 1\ \leq\ i\ \leq\ H $ と $ 1\ \leq\ j\ \leq\ W $ を満たす各整数の組 $ (i,\ j) $ について、 $ i $ 行目 $ j $ 列目にあるマスをマス $ (i,\ j) $ と呼ぶとき、 グリッド A の マス $ (i,\ j) $ には整数 $ A_{i,\ j} $ が、 グリッド B の マス $ (i,\ j) $ には整数 $ B_{i,\ j} $ がそれぞれ書かれています。 あなたは「下記の $ 2 $ つのうちのどちらか $ 1 $ つを行う」という操作を好きな回数( $ 0 $ 回でもよい)だけ繰り返します。 - $ 1\ \leq\ i\ \leq\ H-1 $ を満たす整数 $ i $ を選び、グリッド A の $ i $ 行目と $ (i+1) $ 行目を入れ替える。 - $ 1\ \leq\ i\ \leq\ W-1 $ を満たす整数 $ i $ を選び、グリッド A の $ i $ 列目と $ (i+1) $ 列目を入れ替える。 上記の操作の繰り返しによって、グリッド A をグリッド B に一致させることが可能かどうかを判定してください。 さらに、一致させることが可能な場合は、そのために行う操作回数の最小値を出力してください。 ここで、グリッド A とグリッド B が一致しているとは、 $ 1\ \leq\ i\ \leq\ H $ と $ 1\ \leq\ j\ \leq\ W $ を満たす全ての整数の組 $ (i,\ j) $ について、 グリッド A の マス $ (i,\ j) $ とグリッド B の マス $ (i,\ j) $ に書かれた整数が等しいこととします。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ H $ $ W $ $ A_{1,\ 1} $ $ A_{1,\ 2} $ $ \cdots $ $ A_{1,\ W} $ $ A_{2,\ 1} $ $ A_{2,\ 2} $ $ \cdots $ $ A_{2,\ W} $ $ \vdots $ $ A_{H,\ 1} $ $ A_{H,\ 2} $ $ \cdots $ $ A_{H,\ W} $ $ B_{1,\ 1} $ $ B_{1,\ 2} $ $ \cdots $ $ B_{1,\ W} $ $ B_{2,\ 1} $ $ B_{2,\ 2} $ $ \cdots $ $ B_{2,\ W} $ $ \vdots $ $ B_{H,\ 1} $ $ B_{H,\ 2} $ $ \cdots $ $ B_{H,\ W} $

Output Format

グリッド A をグリッド B に一致させることが不可能な場合は `-1` を、 可能な場合はグリッド A をグリッド B に一致させるために行う操作回数の最小値を出力せよ。

Explanation/Hint

### 制約 - 入力される値は全て整数 - $ 2\ \leq\ H,\ W\ \leq\ 5 $ - $ 1\ \leq\ A_{i,\ j},\ B_{i,\ j}\ \leq\ 10^9 $ ### Sample Explanation 1 初期状態のグリッド A の $ 4 $ 列目と $ 5 $ 列目を入れ替えると、グリッド A は下記の通りになります。 ``` 1 2 3 5 4 6 7 8 10 9 11 12 13 15 14 16 17 18 20 19 ``` 続けて、グリッド A の $ 2 $ 行目と $ 3 $ 行目を入れ替えると、グリッド A は下記の通りになります。 ``` 1 2 3 5 4 11 12 13 15 14 6 7 8 10 9 16 17 18 20 19 ``` 最後に、グリッド A の $ 2 $ 列目と $ 3 $ 列目を入れ替えると、グリッド A は下記の通りになり、グリッド B に一致します。 ``` 1 3 2 5 4 11 13 12 15 14 6 8 7 10 9 16 18 17 20 19 ``` 上に述べた $ 3 $ 回の操作でグリッド A をグリッド B に一致させることができ、 これより少ない回数の操作でグリッド A をグリッド B に一致させることはできないため、 $ 3 $ を出力します。 ### Sample Explanation 2 問題文中の操作をどのように行ってもグリッド A をグリッド B に一致させることは不可能であるため `-1` を出力します。 ### Sample Explanation 3 グリッド A ははじめからグリッド B に一致しています。