#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define a(i,j) a[(i)*18+(j)]
//#define a(i,j) a[i][j]
int sort_function( const void *a, const void *b)
{
return( strcmp((char *)a,(char *)b) );
}
int main() {
long n, i, j, len, nr;
char c;
char *a;
FILE *f;
f = fopen ("restante.in", "r");
freopen ("restante.out", "w", stdout);
fscanf (f,"%ld\n",&n);
a = (char*) malloc ((n+1) * 18 * sizeof (char));
i = 1; j = 1;
while (fscanf(f,"%c",&c), !feof(f)) {
if (c == '\n') {
a(i,j) = 0;
i++; j = 1; a(i,0) = 'O';
}
else {
a(i,j) = c;
j++;
}
}
for (i = 1; i <= n; i++)
qsort(&a(i,1), strlen(&a(i,1)), sizeof(char), sort_function);
/*for (i = 1; i <= n; i++)
printf ("%s\n",&a(i,1)); */
for (i = 1; i <= n; i++) {
for(j =i+1; j <= n; j++)
if (a(j,0) == 'O' && strcmp(&a(i,1), &a(j,1)) == 0) {
a(i,0) = 'N';
a(j,0) = 'N';
while (j < n)
if (strcmp (&a(i,1), &a(++j,1)) == 0) {
a(j,0) = 'N';
}
}
}
nr = 0;
for (i = 1; i <= n; i++)
if (a(i,0) == 'O') nr++;
/* for (i = 1; i <= n; i++)
printf ("%s\n",&a(i,0)); */
printf ("%ld",nr);
fclose(f);
return 0;
}