Divisor de Grade N×M

#174
Made by: Crazynds
5000MB
8s

Você recebe uma grade com N linhas e M colunas. Cada célula contém 0 (espaço vazio) ou 1 (bloqueada).

É garantido que todos os espaços vazios formam uma única região conexa.

Determine quantas formas é possível colocar apenas uma célula bloqueada de forma que os espaços vazios restantes se dividam em 2 ou mais grupos conectados distintos.

Input

A primeira linha contém dois inteiros $N$ e $M$ $(1 \le N, M \le 5*10^3)$.

As próximas $N$ linhas contêm cada uma uma string hexadecimal de exatamente $\lceil M/4 \rceil$ caracteres (09, af), representando as células daquela linha de forma compactada.

Formato hexadecimal

Cada caractere hex representa 4 células consecutivas, com o bit mais significativo correspondendo à célula mais à esquerda (0 = vazia, 1 = bloqueada). Se $M$ não é múltiplo de 4, o último caractere usa apenas os bits mais significativos; os bits restantes são ignorados.

Tabela de conversão:

Hex Binário Células
0 0000 . . . .
f 1111 # # # #
a 1010 # . # .
4 0100 . # . .
7 0111 . # # #

Exemplo com M=6 (2 hex chars, últimos 2 bits do segundo char ignorados):

Células Nibble 1 Nibble 2 String
[0,0,0,0, 0,0] 0=0000 0=00xx "00"
[0,0,0,0, 0,1] 0=0000 4=01xx "04"
[1,0,1,1, 0,1] b=1011 4=01xx "b4"

Output

Imprima um único inteiro: o número de células vazias cuja remoção divide a região em 2 ou mais grupos conectados.


Input Example
Output Example
2 4
0
4
3

5 5
00
70
40
70
00
2

3 3
0
0
0
0

7 7
e0
f0
f8
fe
fe
fe
fe
1