import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.next());
    long ans = 0;
    String str = "";
    char[] ch = new char[10];
    Map<String, Integer> map = new HashMap<>();
    for(int i = 0; i < n; i++) {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    }
    long num;
    for(String temp : map.keySet()) {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    }
    System.out.println(ans);
  }
} import java.util.*; util.* java public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.next());
    long ans = 0;
    String str = "";
    char[] ch = new char[10];
    Map<String, Integer> map = new HashMap<>();
    for(int i = 0; i < n; i++) {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    }
    long num;
    for(String temp : map.keySet()) {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    }
    System.out.println(ans);
  }
} Main public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.next());
    long ans = 0;
    String str = "";
    char[] ch = new char[10];
    Map<String, Integer> map = new HashMap<>();
    for(int i = 0; i < n; i++) {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    }
    long num;
    for(String temp : map.keySet()) {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    }
    System.out.println(ans);
  } main {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.next());
    long ans = 0;
    String str = "";
    char[] ch = new char[10];
    Map<String, Integer> map = new HashMap<>();
    for(int i = 0; i < n; i++) {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    }
    long num;
    for(String temp : map.keySet()) {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    }
    System.out.println(ans);
  } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = Integer.parseInt(sc.next()); n Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc long ans = 0; ans 0 String str = ""; str "" char[] ch = new char[10]; ch new char[10] 10 Map<String, Integer> map = new HashMap<>(); map new HashMap<>() for(int i = 0; i < n; i++) {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    } int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    } {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    } str = sc.next() str sc.next() sc.next sc for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      } int j = 0; int j = 0; j 0 j < 10 j 10 j++ j++ j {
        ch[j] = str.charAt(j);
      } {
        ch[j] = str.charAt(j);
      } ch[j] = str.charAt(j) ch[j] ch j str.charAt(j) str.charAt str j Arrays.sort(ch) Arrays.sort Arrays ch str = String.valueOf(ch) str String.valueOf(ch) String.valueOf String ch if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      } map.containsKey(str) map.containsKey map str {
        map.put(str, map.get(str) + 1);
      } map.put(str, map.get(str) + 1) map.put map str map.get(str) + 1 map.get(str) map.get map str 1 {
        map.put(str, 1);
      } map.put(str, 1) map.put map str 1 long num; num for(String temp : map.keySet()) {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    } String temp map.keySet() map.keySet map {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    } {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    } num = map.get(temp) num map.get(temp) map.get map temp ans += num * (num - 1) / 2 ans num * (num - 1) / 2 num * (num - 1) num (num - 1) num 1 2 System.out.println(ans) System.out.println System.out System System.out ans String[] args args public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.next());
    long ans = 0;
    String str = "";
    char[] ch = new char[10];
    Map<String, Integer> map = new HashMap<>();
    for(int i = 0; i < n; i++) {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    }
    long num;
    for(String temp : map.keySet()) {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    }
    System.out.println(ans);
  }
} public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.next());
    long ans = 0;
    String str = "";
    char[] ch = new char[10];
    Map<String, Integer> map = new HashMap<>();
    for(int i = 0; i < n; i++) {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    }
    long num;
    for(String temp : map.keySet()) {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    }
    System.out.println(ans);
  }
} Main
import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.next());
    long ans = 0;
    String str = "";
    char[] ch = new char[10];
    Map<String, Integer> map = new HashMap<>();
    for(int i = 0; i < n; i++) {
      str = sc.next();
      for(int j = 0; j < 10; j++) {
        ch[j] = str.charAt(j);
      }
      Arrays.sort(ch);
      str = String.valueOf(ch);
      if(map.containsKey(str)) {
        map.put(str, map.get(str) + 1);
      } else {
        map.put(str, 1);
      }
    }
    long num;
    for(String temp : map.keySet()) {
      num = map.get(temp);
      ans += num * (num - 1) / 2;
    }
    System.out.println(ans);
  }
}
