N, M = map(int, input().split()) S = [input() for _ in range(N)] NM = N * M E = [[] for _ in range(NM)] D = [0] * NM F = [0] * NM WB = [0, 0] ans = 0 Q = [] nv = [1] * NM for i in range(N): for j in range(M): ij = i * M + j if S[i][j] == ".": nv[ij] = 0 continue if i < N - 1 and S[i + 1][j] != ".": ij2 = (i + 1) * M + j D[ij] += 1 D[ij2] += 1 E[ij].append(ij2) E[ij2].append(ij) if j < M - 1 and S[i][j + 1] != ".": ij2 = i * M + j + 1 D[ij] += 1 D[ij2] += 1 E[ij].append(ij2) E[ij2].append(ij) if D[ij] == 0: nv[ij] = 0 WB[ij % 2] += 1 elif D[ij] == 1: nv[ij] = 0 Q.append(ij) ans = 0 while Q: x = Q.pop() cnt = 0 for y in E[x]: if nv[y]: D[y] -= 1 if F[x] == 0: nv[y] = 0 F[x] = 1 F[y] = 1 ans += 100 Q.append(y) elif D[y] == 1: nv[y] = 0 Q.append(y) else: if F[x] == 0: if F[y] == 0: F[x] = 1 F[y] = 1 ans += 100 if F[x] == 0: WB[x % 2] += 1 print(x, nv, D, F, ans, Q) def dfs(x): for y in E[x]: if nv[y]: nv[y] = 0 WB2[y % 2] += 1 dfs(y) for i in range(NM): if nv[i]: nv[i] = 0 WB2 = [0, 0] WB2[i % 2] += 1 dfs(i) a, b = WB2 ans += 100 * min(a, b) if a > b: WB[0] += 1 elif a < b: WB[1] += 1 a, b = WB if a < b: a, b = b, a ans += 10 * b ans += a - b print(ans)