import java.util.*;
import java.util.Scanner;

class Main {

    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        final int N = sc.nextInt();
        String[] strs = new String[N];
        // char[][] seq = new char[N][];
        // ArrayList<String> arr = new ArrayList<String>
        sc.nextLine();
        for (int i = 0; i < N; i++) {
            strs[i] = sc.nextLine();
            char[] seq = strs[i].toCharArray();

            Arrays.sort(seq);
            strs[i] = new String(seq);
            // System.out.println(seq[i]);
        }
        Arrays.sort(strs);
        // combinationInit();
        long ans = 0;
        int lif = 0;
        // int[][] pkr = new int[N][27];
        for (int i = 1; i < N; i++) {
            if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            }
        }
        if (lif > 0) {
            ans += combination(lif + 1, 2);
            lif = 0;
        }

        System.out.println(ans);

    }

    static private long combination(long num1, long num2) {
        if (num2 == 0) {
            return 1;
        }
        return (num1 - num2 + 1) * combination(num1, num2 - 1) / num2;
    }
} import java.util.*; util.* java import java.util.Scanner; Scanner java.util class Main {

    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        final int N = sc.nextInt();
        String[] strs = new String[N];
        // char[][] seq = new char[N][];
        // ArrayList<String> arr = new ArrayList<String>
        sc.nextLine();
        for (int i = 0; i < N; i++) {
            strs[i] = sc.nextLine();
            char[] seq = strs[i].toCharArray();

            Arrays.sort(seq);
            strs[i] = new String(seq);
            // System.out.println(seq[i]);
        }
        Arrays.sort(strs);
        // combinationInit();
        long ans = 0;
        int lif = 0;
        // int[][] pkr = new int[N][27];
        for (int i = 1; i < N; i++) {
            if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            }
        }
        if (lif > 0) {
            ans += combination(lif + 1, 2);
            lif = 0;
        }

        System.out.println(ans);

    }

    static private long combination(long num1, long num2) {
        if (num2 == 0) {
            return 1;
        }
        return (num1 - num2 + 1) * combination(num1, num2 - 1) / num2;
    }
} Main public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        final int N = sc.nextInt();
        String[] strs = new String[N];
        // char[][] seq = new char[N][];
        // ArrayList<String> arr = new ArrayList<String>
        sc.nextLine();
        for (int i = 0; i < N; i++) {
            strs[i] = sc.nextLine();
            char[] seq = strs[i].toCharArray();

            Arrays.sort(seq);
            strs[i] = new String(seq);
            // System.out.println(seq[i]);
        }
        Arrays.sort(strs);
        // combinationInit();
        long ans = 0;
        int lif = 0;
        // int[][] pkr = new int[N][27];
        for (int i = 1; i < N; i++) {
            if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            }
        }
        if (lif > 0) {
            ans += combination(lif + 1, 2);
            lif = 0;
        }

        System.out.println(ans);

    } main {
        Scanner sc = new Scanner(System.in);
        final int N = sc.nextInt();
        String[] strs = new String[N];
        // char[][] seq = new char[N][];
        // ArrayList<String> arr = new ArrayList<String>
        sc.nextLine();
        for (int i = 0; i < N; i++) {
            strs[i] = sc.nextLine();
            char[] seq = strs[i].toCharArray();

            Arrays.sort(seq);
            strs[i] = new String(seq);
            // System.out.println(seq[i]);
        }
        Arrays.sort(strs);
        // combinationInit();
        long ans = 0;
        int lif = 0;
        // int[][] pkr = new int[N][27];
        for (int i = 1; i < N; i++) {
            if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            }
        }
        if (lif > 0) {
            ans += combination(lif + 1, 2);
            lif = 0;
        }

        System.out.println(ans);

    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) final int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc String[] strs = new String[N]; strs new String[N] N sc.nextLine() sc.nextLine sc for (int i = 0; i < N; i++) {
            strs[i] = sc.nextLine();
            char[] seq = strs[i].toCharArray();

            Arrays.sort(seq);
            strs[i] = new String(seq);
            // System.out.println(seq[i]);
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
            strs[i] = sc.nextLine();
            char[] seq = strs[i].toCharArray();

            Arrays.sort(seq);
            strs[i] = new String(seq);
            // System.out.println(seq[i]);
        } {
            strs[i] = sc.nextLine();
            char[] seq = strs[i].toCharArray();

            Arrays.sort(seq);
            strs[i] = new String(seq);
            // System.out.println(seq[i]);
        } strs[i] = sc.nextLine() strs[i] strs i sc.nextLine() sc.nextLine sc char[] seq = strs[i].toCharArray(); seq strs[i].toCharArray() strs[i].toCharArray strs[i] strs i Arrays.sort(seq) Arrays.sort Arrays seq strs[i] = new String(seq) strs[i] strs i new String(seq) Arrays.sort(strs) Arrays.sort Arrays strs long ans = 0; ans 0 int lif = 0; lif 0 for (int i = 1; i < N; i++) {
            if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            }
        } int i = 1; int i = 1; i 1 i < N i N i++ i++ i {
            if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            }
        } {
            if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            }
        } if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            } strs[i].equals(strs[i - 1]) strs[i].equals strs[i] strs i strs[i - 1] strs i - 1 i 1 {
                // System.out.println(strs[i]);
                lif++;
            } lif++ lif if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            } lif > 0 lif 0 {
                ans += combination(lif + 1, 2);
                lif = 0;
            } ans += combination(lif + 1, 2) ans combination(lif + 1, 2) combination lif + 1 lif 1 2 lif = 0 lif 0 if (lif > 0) {
            ans += combination(lif + 1, 2);
            lif = 0;
        } lif > 0 lif 0 {
            ans += combination(lif + 1, 2);
            lif = 0;
        } ans += combination(lif + 1, 2) ans combination(lif + 1, 2) combination lif + 1 lif 1 2 lif = 0 lif 0 System.out.println(ans) System.out.println System.out System System.out ans String args[] args static private long combination(long num1, long num2) {
        if (num2 == 0) {
            return 1;
        }
        return (num1 - num2 + 1) * combination(num1, num2 - 1) / num2;
    } combination {
        if (num2 == 0) {
            return 1;
        }
        return (num1 - num2 + 1) * combination(num1, num2 - 1) / num2;
    } if (num2 == 0) {
            return 1;
        } num2 == 0 num2 0 {
            return 1;
        } return 1; 1 return (num1 - num2 + 1) * combination(num1, num2 - 1) / num2; (num1 - num2 + 1) * combination(num1, num2 - 1) / num2 (num1 - num2 + 1) * combination(num1, num2 - 1) (num1 - num2 + 1) num1 - num2 num1 num2 1 combination(num1, num2 - 1) combination num1 num2 - 1 num2 1 num2 long num1 num1 long num2 num2
import java.util.*;
import java.util.Scanner;

class Main {

    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        final int N = sc.nextInt();
        String[] strs = new String[N];
        // char[][] seq = new char[N][];
        // ArrayList<String> arr = new ArrayList<String>
        sc.nextLine();
        for (int i = 0; i < N; i++) {
            strs[i] = sc.nextLine();
            char[] seq = strs[i].toCharArray();

            Arrays.sort(seq);
            strs[i] = new String(seq);
            // System.out.println(seq[i]);
        }
        Arrays.sort(strs);
        // combinationInit();
        long ans = 0;
        int lif = 0;
        // int[][] pkr = new int[N][27];
        for (int i = 1; i < N; i++) {
            if (strs[i].equals(strs[i - 1])) {
                // System.out.println(strs[i]);
                lif++;
            } else if (lif > 0) {
                ans += combination(lif + 1, 2);
                lif = 0;
            }
        }
        if (lif > 0) {
            ans += combination(lif + 1, 2);
            lif = 0;
        }

        System.out.println(ans);

    }

    static private long combination(long num1, long num2) {
        if (num2 == 0) {
            return 1;
        }
        return (num1 - num2 + 1) * combination(num1, num2 - 1) / num2;
    }
}