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 R filas y C columnas de valores 0 y 1. 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:
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.
Entrada
Una línea con dos enteros R y C, menores o iguales a 300. Las siguientes R líneas contienen cada una C caracteres ’0’ o ’1’, sin espacios.
Salida
Escribe el tamaño del mayor cuadrado asesino en una única línea, o escribe −1 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