#include <bits/stdc++.h>
using namespace std;
const long long int INF = 1e18L + 5;
int main() {
  cout.precision(10);
  cout.setf(ios::fixed, ios::floatfield);
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long int T = 1;
  while (T--) {
    long long int n, m, i, z, sum = 0, j;
    vector<long long int> v;
    unordered_map<char, long long int> mp;
    cin >> n >> m;
    string s[n];
    for (i = 0; i < n; i++) cin >> s[i];
    for (i = 0; i < m; i++) {
      cin >> z;
      v.push_back(z);
    }
    for (i = 0; i < m; i++) {
      for (j = 0; j < n; j++) {
        mp[s[j][i]]++;
      }
      long long int mx = 0;
      for (auto itr = mp.begin(); itr != mp.end(); itr++) {
        if (itr->second > mx) mx = itr->second;
      }
      mp.clear();
      sum += (mx * v[i]);
    }
    cout << sum << '\n';
  }
}
