N, K = map(int, input().split()) N2 = 2 * N S = [input() for _ in range(N2)] C = [list(map(int, input().split())) for _ in range(N2)] AS1 = [] AS2 = [] cnt = 0 for i in range(N2): for j in range(N): c1 = C[i][j] c2 = C[i][N2 - j - 1] AS1.append(c1) AS1.append(c2) AS2.append(c1 + c2) if S[i][j] == "#": cnt += 1 if S[i][N2 - j - 1] == "#": cnt += 1 AS1.sort(reverse=True) AS2.sort(reverse=True) ans = sum(AS1[:cnt]) if cnt & 1 == 0: ans = max(ans, sum(AS2[:(cnt // 2)]) + K) print(ans)