// iostream is too mainstream
#include <cstdio>
// bitch please
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <string>
#include <queue>
#include <stack>
#include <algorithm>
#include <iomanip>
#define dibs reserve
#define OVER9000 1234567890
#define patkan 9
#define tisic 47
#define soclose 10e-7
#define ALL_THE(CAKE,LIE) for(auto LIE =CAKE.begin(); LIE != CAKE.end(); LIE++)
#define chocolate win
#define ff first
#define ss second
#define abs(x) ((x < 0)?-(x):(x))
// mylittlepony
using namespace std;
	
int main() {
    cin.sync_with_stdio(0);
    int N;
    cin >> N;
    string s;
    map< vector<long long>,int> M;
    long long mod =1000000009, p =999983;
    for(int i =0; i < N; i++) {
    	cin >> s;
    	vector< vector<int> > V(26);
    	for(int j =0; j < s.length(); j++) V[s[j]-'a'].push_back(j);
    	sort(V.begin(),V.end());
    	vector<long long> H(26,0);
    	for(int j =0; j < 26; j++) ALL_THE(V[j],it) {
    		H[j] =(H[j]*p+(*it)+1)%mod;
    		if(H[j] < mod) H[j] +=mod;}
    	M[H] =M[H]+1;}
    long long ans =0;
    ALL_THE(M,it) ans +=(long long)(it->ss)*(long long)(it->ss-1)/2;
    cout << ans << "\n";
    return 0;}
        
// look at my code
// my code is amazing