#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve() {
int n;
cin >> n;
vector<string> arr(n);
for (int i = 0; i < n; i++) cin >> arr[i];
int cnt=0;
vector<vector<int>>wordsfreq(n,vector<int>(26,0));
for(int i=0;i<n;i++){
for(int j=0;j<arr[i].size();j++){
wordsfreq[i][arr[i][j]-'a']++;
wordsfreq[i][arr[i][j]-'a']=wordsfreq[i][arr[i][j]-'a']%2; //making the (freq%2) 2D array;
}
}
map<vector<int>,int>mapy;
for(int i=0;i<n;i++){
vector<int>curr=wordsfreq[i];
cnt+=mapy[curr];//same array
for(int j=0;j<26;j++){//changing one freq at a time;
curr[j]=!curr[j];//toggle the freq 0->1 , 1->0
cnt+=mapy[curr];
curr[j]=!curr[j];//back to normal
}
mapy[curr]++;
}
cout<<cnt<<endl;
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKCnZvaWQgc29sdmUoKSB7CiAgICBpbnQgbjsKICAgIGNpbiA+PiBuOwogICAgdmVjdG9yPHN0cmluZz4gYXJyKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBhcnJbaV07CiAgICBpbnQgY250PTA7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+d29yZHNmcmVxKG4sdmVjdG9yPGludD4oMjYsMCkpOwogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgZm9yKGludCBqPTA7ajxhcnJbaV0uc2l6ZSgpO2orKyl7CiAgICAgICAgICAgIHdvcmRzZnJlcVtpXVthcnJbaV1bal0tJ2EnXSsrOwogICAgICAgICAgICB3b3Jkc2ZyZXFbaV1bYXJyW2ldW2pdLSdhJ109d29yZHNmcmVxW2ldW2FycltpXVtqXS0nYSddJTI7IC8vbWFraW5nIHRoZSAoZnJlcSUyKSAyRCBhcnJheTsKICAgICAgICB9CiAgICB9CiAgICBtYXA8dmVjdG9yPGludD4saW50Pm1hcHk7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICB2ZWN0b3I8aW50PmN1cnI9d29yZHNmcmVxW2ldOwogICAgICAgIGNudCs9bWFweVtjdXJyXTsvL3NhbWUgYXJyYXkKICAgICAgICBmb3IoaW50IGo9MDtqPDI2O2orKyl7Ly9jaGFuZ2luZyBvbmUgZnJlcSBhdCBhIHRpbWU7CiAgICAgICAgICAgIGN1cnJbal09IWN1cnJbal07Ly90b2dnbGUgdGhlIGZyZXEgMC0+MSAsIDEtPjAKICAgICAgICAgICAgY250Kz1tYXB5W2N1cnJdOwogICAgICAgICAgICBjdXJyW2pdPSFjdXJyW2pdOy8vYmFjayB0byBub3JtYWwKICAgICAgICB9CiAgICAgICAgbWFweVtjdXJyXSsrOwogICAgfQogICAgY291dDw8Y250PDxlbmRsOwp9CgppbnQzMl90IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9