#include <stdio.h>
#include <ctype.h>
#define NL 26
#define M 104659
#define N 1000
char m[NL + 1][NL + 1];
int d[N + 1][NL + 1];
char nextChar( FILE *fin ) {
char ch;
while ( isspace( ch = fgetc( fin ) ) );
return ch;
}
int main() {
FILE *fin, *fout;
int n, k, i, l1, l2, j, sum;
fin = fopen( "nrcuv.in", "r" );
fscanf( fin, "%d%d", &n, &k );
for ( i = 0; i < k; i ++ ) {
l1 = nextChar( fin ) - 'a' + 1;
l2 = nextChar( fin ) - 'a' + 1;
m[l1][l2] = m[l2][l1] = 1;
}
fclose( fin );
for ( i = 1; i <= NL; i ++ )
d[1][i] = 1;
for ( i = 2; i <= n; i ++ ) {
for ( j = 1; j <= NL; j ++ ) {
sum = 0;
for ( k = 1; k <= NL; k ++ ) {
if ( m[j][k] == 0 )
sum = ( sum + d[i - 1][k] ) % M;
}
d[i][j] = sum;
}
}
fout = fopen( "nrcuv.out", "w" );
sum = 0;
for ( i = 1; i <= NL; i ++ )
sum = ( sum + d[n][i] ) % M;
fprintf( fout, "%d\n", sum );
fclose( fout );
return 0;
}