#include using namespace std; int main() { int N,M; cin >> N >> M; vectorV(N); for(int i = 0; i < N; i++) { cin >> V[i]; } vectorS(N); for(int i = 0; i < N; i++) { cin >> S[i]; } vectorused(N); long long ans = 0; for(int i = 0; i < M; i++) { vectorT(M); for(int j = 0; j < N; j++) { if(used[j]) continue; for(int k = 0; k < M; k++) { if(S[j][k] == 'o') { T[k] += V[j]; } } } int a = max_element(T.begin(),T.end())-T.begin(); ans += T[a]*T[a]; for(int j = 0; j < N; j++) { if(S[j][a] == 'o') { used[j] = true; } } } cout << ans << endl; }