你在萨格勒布的电气工程与计算学院“C”楼拍了一张照片,照片中大小相等的窗户整齐地排列在行和列中。有些窗户被涂上了奇特的图案,你正试图分析这张照片并确定不同图案的数量。
我们将照片表示为一个有 $r$ 行 $c$ 列的字符矩形网格。每个窗户都是一个矩形区域,且所有窗户的尺寸相同。窗户中的每个单元格要么是透明的(用“.”字符表示),要么是涂色的(用“+”字符表示)。如果一个窗户可以通过旋转 90 度的倍数并放置在另一个窗户上从而完全重合,则认为这两个窗户的图案相同。在比较图案时,不允许将窗户翻转。
窗户在行和列中规则排列,每个窗户周围都有一行砖块单元格(用“#”字符表示)。更准确地说,在两行相邻的窗户之间,以及第一行窗户之前和最后一行窗户之后,都有一行“#”字符。同样,在两列相邻的窗户之间,以及第一列窗户之前和最后一列窗户之后,都有一列“#”字符。窗户的行数和列数是任意的。窗户的尺寸也是任意的。然而,一个窗户至少包含一个单元格,并且照片中所有的窗户尺寸相同。
请找出照片中不同窗户图案的数量。
输入格式
第一行包含两个整数 $r$ 和 $c$ ($3 \le r, c \le 111$),表示照片的行数和列数。接下来的 $r$ 行,每行包含一个由 $c$ 个字符组成的字符串,表示照片的一行。
输出格式
输出一个整数,表示照片中不同窗户图案的数量。
样例
样例输入 1
11 16 ################ #....#++++#+...# #....++..+#+...# #....#..++.+#..# #....#....#++++# ################ #....#.+..#++++# #..++#..++#++.+# #+...#....++.+# #+...#..++#....# ################
样例输出 1
4
样例输入 2
9 21 ##################### #...+#####++++#..+.# #.+..#..#.+..#..+.# #.+..#..#.+..#..+.# ##################### #.+..#..#.+..#..+.# #.+..#..#.+..#..+.# #...+#####++++#..+.# #####################
样例输出 2
4