#include <bits/stdc++.h>
#define int long long
using namespace std;
// fiule 2.0
map<int, int> mp;
string s[50005];
signed main()
{
int i, n, m;
cin >> n >> m;
for (i = 1; i <= n; i++) {
cin >> s[i];
}
int ans = n * (n - 1) / 2;
for (int mask = 1; mask < (1 << m); mask++) {
mp.clear();
for (i = 1; i <= n; i++) {
int nr = 0;
for (int j = 0; j < m && nr != -1; j++) {
if (s[i][j] == '?' && (1 << j) & mask) nr = -1;
if (((1 << j) & mask) != 0 && s[i][j] != '?') {
nr = nr * 26 + s[i][j] - 'a';
}
}
if (nr != -1) mp[nr]++;
}
int flag = 1;
if (__builtin_popcountll(mask) % 2 == 1) flag = -1;
for (auto [key, val] : mp) {
ans += flag * val * (val - 1) / 2;
}
}
cout << ans;
return 0;
}