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)