Al debugar un programa Mirko se ha dado cuenta de un bug que está relacionado con los llamados “cuadrados asesinos” en la memoria del programa. La memoria del programa es una matriz compuesta de filas y columnas de valores y . Un cuadrado asesino es una submatriz dentro de la memoria, de más de un caracter que, al rotarla 180 grados, es idéntica a ella misma. Por ejemplo, la siguiente matriz contiene 3 cuadrados asesinos:
3.5cm
101010
111001
101001
Memoria
3.5cm
....10
....01
......
Cuadrado
asesino
3.5cm
......
...00.
...00.
Cuadrado
asesino
3.5cm
101...
111...
101...
Cuadrado
asesino
Mirko se pregunta si hay una conexión entre el tamaño del cuadrado asesino más grande y el bug en su programa. Ayúdale escribiendo un programa que, dada una distribución de bits en la memoria, encuentre el tamaño del cuadrado asesino más grande. Por ejemplo, el cuadrado asesino más grande del ejemplo anterior tenía tamaño 3.
Una línea con dos enteros y , menores o iguales a . Las siguientes líneas contienen cada una caracteres ’0’ o ’1’, sin espacios.
Escribe el tamaño del mayor cuadrado asesino en una única línea, o escribe si no hay ningún cuadrado asesino.
Input
1 1 0
Output
-1
Input
8 4 0101 1010 1000 0000 0011 0010 1000 1011
Output
3
Input
2 5 01011 01100
Output
2