#arc095c. [arc095_c]Symmetric Grid

[arc095_c]Symmetric Grid

题目描述

有一个 H×WH \times W 的网格(HH 行,WW 列),每个方格中包含一个小写英文字母。具体来说,位于第 ii 行和第 jj 列的方格中的字母等于字符串 SiS_i 的第 jj 个字符。

Snuke 可以对该网格应用以下操作任意次数:

  • 选择两行并交换它们。或者,选择两列并交换它们。

Snuke 希望这个网格是_对称_的。也就是说,对于任意的 1iH1 \leq i \leq H1jW1 \leq j \leq W,位于第 ii 行和第 jj 列的方格中的字母与位于第 (H+1i)(H + 1 - i) 行和第 (W+1j)(W + 1 - j) 列的方格中的字母相等。

确定 Snuke 是否可以实现这个目标。

约束条件

  • 1H121 \leq H \leq 12
  • 1W121 \leq W \leq 12
  • Si=W|S_i| = W
  • SiS_i 由小写英文字母组成。

输入

输入格式如下:

HH WW S1S_1 S2S_2 :: SHS_H

输出

如果 Snuke 可以使网格对称,则打印 YES;如果不能,则打印 NO


示例输入1

2 3
arc
rac

示例输出1

YES

如果将从左边数第二列和第三列进行交换,如下图所示,网格就变成对称了:


示例输入2

3 7
atcoder
regular
contest

示例输出2

NO

示例输入3

12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxiliocfdgx
nfoabgilamoi
ibxbdqmzxxwe
pqirylfrcrnf
wtehfkllbura
yfrnpflcrirq
wvcclwgiubrk
lkbrwgwuiccv

示例输出3

YES