import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
 
class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
 
        int N = sc.nextInt();
        HashMap<String, Integer> map = new HashMap<String, Integer>();

        for(int i=0; i<N; i++){
            char[] a = sc.next().toCharArray();
            Arrays.sort(a);
            String s = new String(a);
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            }
        }

        long ans = 0;
        for(int i:map.values()){
            ans += (long)i * (i - 1) / 2;
        }
        System.out.println(ans);
    }
} import java.util.*; util.* java import java.util.Arrays; Arrays java.util import java.util.HashMap; HashMap java.util class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
 
        int N = sc.nextInt();
        HashMap<String, Integer> map = new HashMap<String, Integer>();

        for(int i=0; i<N; i++){
            char[] a = sc.next().toCharArray();
            Arrays.sort(a);
            String s = new String(a);
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            }
        }

        long ans = 0;
        for(int i:map.values()){
            ans += (long)i * (i - 1) / 2;
        }
        System.out.println(ans);
    }
} Main public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
 
        int N = sc.nextInt();
        HashMap<String, Integer> map = new HashMap<String, Integer>();

        for(int i=0; i<N; i++){
            char[] a = sc.next().toCharArray();
            Arrays.sort(a);
            String s = new String(a);
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            }
        }

        long ans = 0;
        for(int i:map.values()){
            ans += (long)i * (i - 1) / 2;
        }
        System.out.println(ans);
    } main {
        Scanner sc = new Scanner(System.in);
 
        int N = sc.nextInt();
        HashMap<String, Integer> map = new HashMap<String, Integer>();

        for(int i=0; i<N; i++){
            char[] a = sc.next().toCharArray();
            Arrays.sort(a);
            String s = new String(a);
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            }
        }

        long ans = 0;
        for(int i:map.values()){
            ans += (long)i * (i - 1) / 2;
        }
        System.out.println(ans);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc HashMap<String, Integer> map = new HashMap<String, Integer>(); map new HashMap<String, Integer>() for(int i=0; i<N; i++){
            char[] a = sc.next().toCharArray();
            Arrays.sort(a);
            String s = new String(a);
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            }
        } int i=0; int i=0; i 0 i<N i N i++ i++ i {
            char[] a = sc.next().toCharArray();
            Arrays.sort(a);
            String s = new String(a);
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            }
        } {
            char[] a = sc.next().toCharArray();
            Arrays.sort(a);
            String s = new String(a);
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            }
        } char[] a = sc.next().toCharArray(); a sc.next().toCharArray() sc.next().toCharArray sc.next() sc.next sc Arrays.sort(a) Arrays.sort Arrays a String s = new String(a); s new String(a) if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            } map.containsKey(s) map.containsKey map s {
                map.put(s, map.get(s) + 1);
            } map.put(s, map.get(s) + 1) map.put map s map.get(s) + 1 map.get(s) map.get map s 1 {
                map.put(s, 1);
            } map.put(s, 1) map.put map s 1 long ans = 0; ans 0 for(int i:map.values()){
            ans += (long)i * (i - 1) / 2;
        } int i map.values() map.values map {
            ans += (long)i * (i - 1) / 2;
        } {
            ans += (long)i * (i - 1) / 2;
        } ans += (long)i * (i - 1) / 2 ans (long)i * (i - 1) / 2 (long)i * (i - 1) (long)i (i - 1) i 1 2 System.out.println(ans) System.out.println System.out System System.out ans String[] args args
import java.util.*;
import java.util.Arrays;
import java.util.HashMap;
 
class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
 
        int N = sc.nextInt();
        HashMap<String, Integer> map = new HashMap<String, Integer>();

        for(int i=0; i<N; i++){
            char[] a = sc.next().toCharArray();
            Arrays.sort(a);
            String s = new String(a);
            if(map.containsKey(s)){
                map.put(s, map.get(s) + 1);
            }
            else{
                map.put(s, 1);
            }
        }

        long ans = 0;
        for(int i:map.values()){
            ans += (long)i * (i - 1) / 2;
        }
        System.out.println(ans);
    }
}