N,K = map(int, input().split()) S = [] black = 0 for _ in range(N*2): S.append(list(input())) black+=S[-1].count('#') C = [] ALL = [] for _ in range(N*2): C.append(list(map(int, input().split()))) ALL.extend(C[-1]) ALL.sort(reverse=True) ans = sum(ALL[:black]) if black%2==0: MIRROR = [] for i in range(N*2): for j in range(N): MIRROR.append(C[i][j]+C[i][2*N-j-1]) MIRROR.sort(reverse=True) ans = max(ans,sum(MIRROR[:black//2])+K) print(ans)