# import pypyjit # pypyjit.set_param('max_unroll_recursion=-1') from collections import * from itertools import * from functools import * import math,sys input = sys.stdin.readline N,K = map(int,input().split()) S = [list(input())[:-1] for _ in range(2*N)] C = [list(map(int,input().split())) for _ in range(2*N)] X = 0 for i in range(2*N): S[i] = [int(j=='#') for j in S[i]] X += sum(S[i]) ans = 0 Y = [] for i in range(2*N): for j in range(2*N): Y.append(C[i][j]) Y.sort() ans = sum(Y[-X:]) if X%2==1: print(ans) exit() x = X//2 Y = [] for i in range(2*N): for j in range(N): Y.append(C[i][j]+C[i][-1-j]) Y.sort() tmp = sum(Y[-x:])+K print(max(ans,tmp))