import java.util.*;
public class Main {
	Scanner sc = new Scanner(System.in);
	int a,b,c,d,e,f,k,l,m,n,x,y,z;
	long ans;
	String[] S;

	Main(){
		// 整数の入力
		n = sc.nextInt();
		S = new String[n];

		// 文字列の入力
		for(int i=0;i<n;i++){
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		}

		Arrays.sort(S);

		String str = S[0];
		long cnt = 1;
		for(int i=1;i<n;i++){
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		}

		ans+=comv(cnt);

		// 出力
		System.out.println(ans);		
	}

	private long comv(long x){
		if(x==1)return 0;
		else return x*(x-1)/2;
	}

	public static void main(String[] args){
		new Main();
	}
} import java.util.*; util.* java public class Main {
	Scanner sc = new Scanner(System.in);
	int a,b,c,d,e,f,k,l,m,n,x,y,z;
	long ans;
	String[] S;

	Main(){
		// 整数の入力
		n = sc.nextInt();
		S = new String[n];

		// 文字列の入力
		for(int i=0;i<n;i++){
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		}

		Arrays.sort(S);

		String str = S[0];
		long cnt = 1;
		for(int i=1;i<n;i++){
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		}

		ans+=comv(cnt);

		// 出力
		System.out.println(ans);		
	}

	private long comv(long x){
		if(x==1)return 0;
		else return x*(x-1)/2;
	}

	public static void main(String[] args){
		new Main();
	}
} Main Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int a a b b c c d d e e f f k k l l m m n n x x y y z; z long ans; ans String[] S; S Main(){
		// 整数の入力
		n = sc.nextInt();
		S = new String[n];

		// 文字列の入力
		for(int i=0;i<n;i++){
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		}

		Arrays.sort(S);

		String str = S[0];
		long cnt = 1;
		for(int i=1;i<n;i++){
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		}

		ans+=comv(cnt);

		// 出力
		System.out.println(ans);		
	} Main {
		// 整数の入力
		n = sc.nextInt();
		S = new String[n];

		// 文字列の入力
		for(int i=0;i<n;i++){
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		}

		Arrays.sort(S);

		String str = S[0];
		long cnt = 1;
		for(int i=1;i<n;i++){
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		}

		ans+=comv(cnt);

		// 出力
		System.out.println(ans);		
	} n = sc.nextInt() n sc.nextInt() sc.nextInt sc S = new String[n] S new String[n] n for(int i=0;i<n;i++){
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		} {
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		} String s = sc.next(); s sc.next() sc.next sc String[] ss = s.split(""); ss s.split("") s.split s "" Arrays.sort(ss) Arrays.sort Arrays ss S[i]=ss[0] S[i] S i ss[0] ss 0 for(int j=1;j<10;j++){
				S[i] += ss[j];
			} int j=1; int j=1; j 1 j<10 j 10 j++ j++ j {
				S[i] += ss[j];
			} {
				S[i] += ss[j];
			} S[i] += ss[j] S[i] S i ss[j] ss j Arrays.sort(S) Arrays.sort Arrays S String str = S[0]; str S[0] S 0 long cnt = 1; cnt 1 for(int i=1;i<n;i++){
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		} int i=1; int i=1; i 1 i<n i n i++ i++ i {
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		} {
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		} if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			} !str.equals(S[i]) str.equals(S[i]) str.equals str S[i] S i {
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			} ans+=comv(cnt) ans comv(cnt) comv cnt cnt=0 cnt 0 str = S[i] str S[i] S i cnt++ cnt ans+=comv(cnt) ans comv(cnt) comv cnt System.out.println(ans) System.out.println System.out System System.out ans private long comv(long x){
		if(x==1)return 0;
		else return x*(x-1)/2;
	} comv {
		if(x==1)return 0;
		else return x*(x-1)/2;
	} if(x==1)return 0;
		else return x*(x-1)/2; x==1 x 1 return 0; 0 return x*(x-1)/2; x*(x-1)/2 x*(x-1) x (x-1) x 1 2 long x x public static void main(String[] args){
		new Main();
	} main {
		new Main();
	} new Main() String[] args args public class Main {
	Scanner sc = new Scanner(System.in);
	int a,b,c,d,e,f,k,l,m,n,x,y,z;
	long ans;
	String[] S;

	Main(){
		// 整数の入力
		n = sc.nextInt();
		S = new String[n];

		// 文字列の入力
		for(int i=0;i<n;i++){
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		}

		Arrays.sort(S);

		String str = S[0];
		long cnt = 1;
		for(int i=1;i<n;i++){
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		}

		ans+=comv(cnt);

		// 出力
		System.out.println(ans);		
	}

	private long comv(long x){
		if(x==1)return 0;
		else return x*(x-1)/2;
	}

	public static void main(String[] args){
		new Main();
	}
} public class Main {
	Scanner sc = new Scanner(System.in);
	int a,b,c,d,e,f,k,l,m,n,x,y,z;
	long ans;
	String[] S;

	Main(){
		// 整数の入力
		n = sc.nextInt();
		S = new String[n];

		// 文字列の入力
		for(int i=0;i<n;i++){
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		}

		Arrays.sort(S);

		String str = S[0];
		long cnt = 1;
		for(int i=1;i<n;i++){
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		}

		ans+=comv(cnt);

		// 出力
		System.out.println(ans);		
	}

	private long comv(long x){
		if(x==1)return 0;
		else return x*(x-1)/2;
	}

	public static void main(String[] args){
		new Main();
	}
} Main
import java.util.*;
public class Main {
	Scanner sc = new Scanner(System.in);
	int a,b,c,d,e,f,k,l,m,n,x,y,z;
	long ans;
	String[] S;

	Main(){
		// 整数の入力
		n = sc.nextInt();
		S = new String[n];

		// 文字列の入力
		for(int i=0;i<n;i++){
			String s = sc.next();
			String[] ss = s.split("");
			Arrays.sort(ss);
			S[i]=ss[0];
			for(int j=1;j<10;j++){
				S[i] += ss[j];
			}
		}

		Arrays.sort(S);

		String str = S[0];
		long cnt = 1;
		for(int i=1;i<n;i++){
			if(!str.equals(S[i])){
				ans+=comv(cnt);
				cnt=0;
				str = S[i];
			}
			cnt++;
		}

		ans+=comv(cnt);

		// 出力
		System.out.println(ans);		
	}

	private long comv(long x){
		if(x==1)return 0;
		else return x*(x-1)/2;
	}

	public static void main(String[] args){
		new Main();
	}
}