//
// main.c
// datatahti
//
// Created by aapo haavisto on 10/11/19.
// Copyright © 2019 Aapo Haavisto. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct x{
int* lista;
int pituus;
};
struct x etsisamat(char* sana,char merkki){
struct x palautettava;
palautettava.lista=malloc(51*sizeof(int));
palautettava.pituus=0;
for (int i=0; i<strlen(sana); i++) {
if (sana[i]==merkki){
palautettava.lista[palautettava.pituus]=i;
palautettava.pituus++;
}
}
return palautettava;
}
int onkoharmoniset(char* a,char* b){
if (strlen(a)!=strlen(b))
return 0;
char* c=a;
char* d=b;
for (int i=0; i<strlen(a); i++){
struct x cee=etsisamat(c, c[i]);
struct x dee=etsisamat(d, d[i]);
if(c[i]!=0){
if (memcmp(cee.lista, dee.lista, cee.pituus*sizeof(int))) {
return 0;
}
}
}
return 1;
}
int onkosama(char** a, char** b){
if (a[0][0]!=b[0][0]) {
return 0;
}
int arvot=a[0][0];
while(arvot>0){
}
if (arvot==0)
return 1;
else
return 0;
}
int main(void){
int maara;
scanf("%i",&maara);
int parit=0;
char** kokolista=malloc(maara*sizeof(char*));
//luetaan merkkijonot
for (int i=0; i<maara; i++){
kokolista[i]=malloc(51*sizeof(char));
scanf("%s",kokolista[i]);
}
for (int i= 0; i<maara; i++) {
for (int a=i+1; a<maara; a++) {
if (onkoharmoniset(kokolista[i], kokolista[a]))
parit++;
}
}
printf("%i",parit);
for (int i=0; i<maara; i++)
free(kokolista[i]);
free(kokolista);
}