n, k = map(int, input().split()) S = [input() for _ in range(2 * n)] C = [list(map(int, input().split())) for _ in range(2 * n)] c = 0 for row in S: for s in row: if s == "#": c += 1 lst = [] for row in C: lst += row lst.sort(reverse=True) ans = sum(lst[:c]) if c % 2 == 0: lst = [] for i in range(2 * n): for j in range(n): lst.append(C[i][j] + C[i][2 * n - 1 - j]) lst.sort(reverse=True) tmp = sum(lst[:c // 2]) + k ans = max(ans, tmp) print(ans)