def dfs(v): used[v] = True for u in G[v]: w = match[u] if w < 0 or not used[w] and dfs(w): match[u] = v return True return False N, M = map(int, input().split()) S = [input() for _ in range(N)] X = (N * M + 1) // 2 Y = N * M // 2 G = [[] for _ in range(X)] W, B = 0, 0 for n in range(N): for m in range(M): if S[n][m] == 'b': B += 1 elif S[n][m] == 'w': W += 1 else: continue if (n + m) % 2: continue x = (n * M + m) // 2 for dn, dm in ((-1, 0), (1, 0), (0, -1), (0, 1)): n2 = n + dn m2 = m + dm if 0 <= n2 < N and 0 <= m2 < M and S[n2][m2] != '.': y = (n2 * M + m2) // 2 G[x].append(y) meth3 = 0 match = [-1] * Y for v in range(X): used = [0] * X if dfs(v): meth3 += 1 meth2 = min(W, B) - meth3 meth1 = abs(W - B) print(meth1 + meth2 * 10 + meth3 * 100)