n,k = map(int,input().split()) s = [input() for i in range(2*n)] c = [list(map(int,input().split())) for i in range(2*n)] cnt = 0 for i in range(2*n): for j in range(2*n): if s[i][j] == "#": cnt += 1 mx = [] for i in range(2*n): for j in range(2*n): mx.append(c[i][j]) mx.sort(key = lambda x:-x) ans = 0 for i in range(cnt): ans += mx[i] if cnt % 2 == 1: print(ans) else: syn = [] for i in range(2*n): for j in range(n): syn.append(c[i][j] + c[i][2*n-j-1]) syn.sort(key = lambda x:-x) ans2 = 0 for i in range(cnt//2): ans2 += syn[i] print(max(ans, ans2+k))