#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5;
int N, A[maxn];
unordered_map<int, int> cnt;
unordered_map<int, int> cnt_popped;
int main() {
  bool on[26] = {};
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> N;
  string S;
  getline(cin, S);
  for (auto j = (0); j != (N); ++j) {
    getline(cin, S);
    for (char ch : S) {
      on[ch - 'a'] = !on[ch - 'a'];
    }
    int mask = 0;
    for (auto i = (0); i != (26); ++i) {
      if (on[i]) {
        mask |= 1 << i;
        on[i] = false;
      }
    }
    A[j] = mask;
  }
  long long ret = 0;
  for (auto k = (0); k != (N); ++k) {
    int m = A[k];
    ret += cnt[m];
    ret += cnt_popped[m];
    for (int i = 0, j = 1; i < 26; i++, j <<= 1) {
      if (m & j) {
        ret += cnt[m ^ j];
        cnt_popped[m ^ j]++;
      }
    }
    cnt[m]++;
  }
  cout << ret << endl;
  return 0;
}
