#include <bits/stdc++.h>
#define int long long
using namespace std;
map<int, int> mp;
string s[50005];
vector<string> mask[65];
signed main()
{
int i, n, m;
cin >> n >> m;
for (i = 1; i <= n; i++) {
cin >> s[i];
int on = 0;
for (int j = 0; j < m; j++) {
if (s[i][j] != '?') on += (1 << j);
}
mask[on].push_back(s[i]);
}
int ans = 0;
for (int mask1 = 0; mask1 < (1 << m); mask1++) {
for (int mask2 = 0; mask2 < (1 << m); mask2++) {
vector<int> indici;
for (int j = 0; j < m; j++) {
if (mask1 & mask2 & (1 << j)) {
indici.push_back(j);
}
}
mp.clear();
for (int i = 0; i < mask[mask1].size(); i++) {
string s1 = mask[mask1][i];
int nr = 0;
for (int ind : indici) {
nr = nr * 26 + s1[ind] - 'a';
}
mp[nr]++;
}
for (int i = 0; i < mask[mask2].size(); i++) {
string s1 = mask[mask2][i];
int nr = 0;
for (int ind : indici) {
nr = nr * 26 + s1[ind] - 'a';
}
ans += mp[nr];
}
}
}
cout << (ans - n) / 2;
return 0;
}