#include <bits/stdc++.h>
using namespace std;
const int xx[] = {1, -1, 0, 0}, yy[] = {0, 0, 1, -1};
long long pow(long long a, long long b, long long p) {
  long long sum = 1;
  for (a %= p; b; a = a * a % p, b >>= 1)
    if (b & 1) sum = sum * a % p;
  return sum;
}
char ch;
void rd(int &x) {
  for (ch = getchar(); ch < '0'; ch = getchar())
    ;
  for (x = 0; ch >= '0'; ch = getchar()) x = x * 10 + ch - '0';
}
long long phi(long long n) {
  long long i, re = n;
  for (i = 2; i * i <= n; i++)
    if (n % i == 0) {
      re = re / i * (i - 1);
      while (n % i == 0) n /= i;
    }
  if (n > 1) re = re / n * (n - 1);
  return re % 1000000007;
}
void exgcd(long long a, long long b, long long &x, long long &y) {
  if (!b) {
    x = 1;
    y = 0;
    return;
  }
  exgcd(b, a % b, y, x);
  y -= x * (a / b);
}
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
int T, n, m, x, y, i, j, t, ans, tot, cnt, a[44], b[44], W[44], q[9], c[9][9];
char A[9], B[9];
bool ck() {
  int la, i, j, ff;
  for (la = q[1], i = 2; i <= n; i++) {
    ff = 0;
    for (j = 1; j <= m; j++)
      if (a[j] == la && b[j] == q[i]) {
        la = W[j], ff = 1;
        break;
      }
    if (!ff) return 0;
  }
  if (la == 1)
    return 1;
  else
    return 0;
}
void dfs(int x) {
  if (x == n + 1) {
    if (ck()) {
      ans++;
    }
    return;
  }
  for (int i = 1; i <= 6; i++) q[x] = i, dfs(x + 1);
}
int main() {
  scanf("%d%d", &n, &m);
  for (i = 1; i <= m; i++) {
    scanf("%s%s", A, B);
    W[i] = B[0] - 'a' + 1;
    a[i] = A[0] - 'a' + 1;
    b[i] = A[1] - 'a' + 1;
  }
  dfs(1);
  printf("%d", ans);
}
