import java.util.*;

class Main{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] s = new String[n];
		for(int i = 0; i < n; i++){
			s[i] = sc.next();
		}
		long ans = 0;
		TreeMap<String,Integer> map = new TreeMap<String,Integer>();
		for(int i = 0; i < n; i++){
			int[] a = new int[10];
			for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			}
			Arrays.sort(a);
			String b = "";
			for(int j = 0; j < 10; j++){
				b=b + a[j];
			}
			if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			}
		}
		System.out.print(ans);
	}
} import java.util.*; util.* java class Main{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] s = new String[n];
		for(int i = 0; i < n; i++){
			s[i] = sc.next();
		}
		long ans = 0;
		TreeMap<String,Integer> map = new TreeMap<String,Integer>();
		for(int i = 0; i < n; i++){
			int[] a = new int[10];
			for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			}
			Arrays.sort(a);
			String b = "";
			for(int j = 0; j < 10; j++){
				b=b + a[j];
			}
			if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			}
		}
		System.out.print(ans);
	}
} Main public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] s = new String[n];
		for(int i = 0; i < n; i++){
			s[i] = sc.next();
		}
		long ans = 0;
		TreeMap<String,Integer> map = new TreeMap<String,Integer>();
		for(int i = 0; i < n; i++){
			int[] a = new int[10];
			for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			}
			Arrays.sort(a);
			String b = "";
			for(int j = 0; j < 10; j++){
				b=b + a[j];
			}
			if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			}
		}
		System.out.print(ans);
	} main {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] s = new String[n];
		for(int i = 0; i < n; i++){
			s[i] = sc.next();
		}
		long ans = 0;
		TreeMap<String,Integer> map = new TreeMap<String,Integer>();
		for(int i = 0; i < n; i++){
			int[] a = new int[10];
			for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			}
			Arrays.sort(a);
			String b = "";
			for(int j = 0; j < 10; j++){
				b=b + a[j];
			}
			if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			}
		}
		System.out.print(ans);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc String[] s = new String[n]; s new String[n] n for(int i = 0; i < n; i++){
			s[i] = sc.next();
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			s[i] = sc.next();
		} {
			s[i] = sc.next();
		} s[i] = sc.next() s[i] s i sc.next() sc.next sc long ans = 0; ans 0 TreeMap<String,Integer> map = new TreeMap<String,Integer>(); map new TreeMap<String,Integer>() for(int i = 0; i < n; i++){
			int[] a = new int[10];
			for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			}
			Arrays.sort(a);
			String b = "";
			for(int j = 0; j < 10; j++){
				b=b + a[j];
			}
			if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			}
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			int[] a = new int[10];
			for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			}
			Arrays.sort(a);
			String b = "";
			for(int j = 0; j < 10; j++){
				b=b + a[j];
			}
			if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			}
		} {
			int[] a = new int[10];
			for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			}
			Arrays.sort(a);
			String b = "";
			for(int j = 0; j < 10; j++){
				b=b + a[j];
			}
			if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			}
		} int[] a = new int[10]; a new int[10] 10 for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			} int j = 0; int j = 0; j 0 j < 10 j 10 j++ j++ j {
				a[j] = s[i].charAt(j);
			} {
				a[j] = s[i].charAt(j);
			} a[j] = s[i].charAt(j) a[j] a j s[i].charAt(j) s[i].charAt s[i] s i j Arrays.sort(a) Arrays.sort Arrays a String b = ""; b "" for(int j = 0; j < 10; j++){
				b=b + a[j];
			} int j = 0; int j = 0; j 0 j < 10 j 10 j++ j++ j {
				b=b + a[j];
			} {
				b=b + a[j];
			} b=b + a[j] b b + a[j] b a[j] a j if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			} map.containsKey(b) map.containsKey map b {
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			} map.put(b,map.get(b)+1) map.put map b map.get(b)+1 map.get(b) map.get map b 1 ans+=map.get(b) ans map.get(b) map.get map b {
				map.put(b,0);
			} map.put(b,0) map.put map b 0 System.out.print(ans) System.out.print System.out System System.out ans String args[] args
import java.util.*;

class Main{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] s = new String[n];
		for(int i = 0; i < n; i++){
			s[i] = sc.next();
		}
		long ans = 0;
		TreeMap<String,Integer> map = new TreeMap<String,Integer>();
		for(int i = 0; i < n; i++){
			int[] a = new int[10];
			for(int j = 0; j < 10; j++){
				a[j] = s[i].charAt(j);
			}
			Arrays.sort(a);
			String b = "";
			for(int j = 0; j < 10; j++){
				b=b + a[j];
			}
			if(map.containsKey(b)){
              map.put(b,map.get(b)+1);
              ans+=map.get(b);
			}else{
				map.put(b,0);
			}
		}
		System.out.print(ans);
	}
}
