#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
map<int, int> Map;
int a[27];
int main() {
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  long long ans = 0;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    bitset<30> b;
    memset(a, 0, sizeof(a));
    for (int j = 0; j < s.size(); j++) a[s[j] - 'a']++;
    for (int j = 0; j < 26; j++) {
      if (a[j] & 1) b.set(j);
    }
    unsigned long tmp = b.to_ulong();
    ans += Map[tmp];
    for (int j = 0; j < 26; j++) {
      int temp;
      temp = b[j], b[j] = temp ^ 1;
      temp = b.to_ulong();
      if (Map.find(temp) != Map.end()) ans += Map[temp];
      temp = b[j], b[j] = temp ^ 1;
    }
    Map[tmp]++;
  }
  cout << ans << endl;
  return 0;
}
