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=[]
black=0
sym=[]
for i in range(2*N):
    for j in range(2*N):
        c.append(C[i][j])
        if S[i][j]=="#":
            black+=1

for i in range(N*2):
    for j in range(N):
        sym.append((C[i][j]+C[i][2*N-j-1]))
c.sort(reverse=True)
sym.sort(reverse=True)
ans=sum(c[:black])

if black%2==1:
    print(ans)
    exit()

ans=max(ans,sum(sym[:black//2])+K)
print(ans)