#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
using namespace std;
bool is_prime(int n) {
  for (int i = 2; i * i <= n; ++i) {
    if (n % i == 0) {
      return false;
    }
  }
  return true;
}
inline long long getPow(long long a, long long b) {
  long long res = 1ll, tp = a;
  while (b) {
    if (b & 1ll) {
      res *= tp;
      res %= 1000000007;
    }
    tp *= tp;
    tp %= 1000000007;
    b >>= 1ll;
  }
  return res;
}
inline long long nxt() {
  long long x;
  cin >> x;
  return x;
}
void ok() {
  puts("YES");
  exit(0);
}
void no() {
  puts("NO");
  exit(0);
}
long long xx[] = {-1, 1, 0, 0};
long long yy[] = {0, 0, -1, 1};
const int N = 1e5 + 3;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n = nxt();
  map<long long, pair<string, long long>> ct;
  long long num = 0;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    vector<long long> buf('z' + 1, 0);
    for (int j = 0; j < s.size(); j++) {
      buf[s[j]]++;
    }
    string te = "";
    long long hs = 0;
    long long d = 1;
    for (int j = 'a'; j <= 'z'; j++) {
      if (buf[j] % 2) {
        te += char(j);
        hs += ((j - 'a' + 1) * d);
        d *= 31;
        d %= 1231231938213927;
        hs %= 1231231938213927;
      }
    }
    if (te.size()) {
      ct[hs].second += 1;
      ct[hs].first = te;
    } else
      num++;
  }
  long long ans = 0;
  for (auto it : ct) {
    ans += (it.second.second) * (it.second.second - 1) / 2;
    string s = it.second.first;
    if (s.size() == 1) ans += it.second.second * num;
    string cur = s;
    for (int i = 0; i < cur.size(); i++) {
      string nu = cur;
      nu.erase(i, 1);
      long long hs = 0;
      long long d = 1;
      for (int j = 0; j < nu.size(); j++) {
        hs += ((nu[j] - 'a' + 1) * d);
        d *= 31;
        d %= 1231231938213927;
        hs %= 1231231938213927;
      }
      if (ct.find(hs) != ct.end()) {
        ans += (it.second.second) * ct[hs].second;
      }
    }
  }
  cout << (ans + (num) * (num - 1) / 2);
  return 0;
}
