#include <bits/stdc++.h>
using namespace std;

int main() {
    int N,M;
    cin >> N >> M;
    vector<int>V(N);
    for(int i = 0; i < N; i++) {
        cin >> V[i];
    }
    vector<string>S(N);
    for(int i = 0; i < N; i++) {
        cin >> S[i];
    }
    vector<bool>used(N);
    long long ans = 0;
    for(int i = 0; i < M; i++) {
        vector<long long>T(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;
}