IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2)
B
Bear and Compressing
Codeforces
1300
原题
← AC →
翻译中…

Limak is a little polar bear. Polar bears hate long strings and thus they like to compress them. You should also know that Limak is so young that he knows only first six letters of the English alphabet: 'a', 'b', 'c', 'd', 'e' and 'f'.

翻译中…

You are given a set of $*q*$ possible operations. Limak can perform them in any order, any operation may be applied any number of times. The $*i*$-th operation is described by a string $*a*_{*i*}$ of length two and a string $*b*_{*i*}$ of length one. No two of $*q*$ possible operations have the same string $*a*_{*i*}$.

翻译中…

When Limak has a string $*s*$ he can perform the $*i*$-th operation on $*s*$ if the first two letters of $*s*$ match a two-letter string $*a*_{*i*}$. Performing the $*i*$-th operation removes first two letters of $*s*$ and inserts there a string $*b*_{*i*}$. See the notes section for further clarification.

翻译中…

You may note that performing an operation decreases the length of a string $*s*$ exactly by $1$. Also, for some sets of operations there may be a string that cannot be compressed any further, because the first two letters don't match any $*a*_{*i*}$.

翻译中…

Limak wants to start with a string of length $*n*$ and perform $*n* - 1$ operations to finally get a one-letter string "a". In how many ways can he choose the starting string to be able to get "a"? Remember that Limak can use only letters he knows.

翻译中…

Input

翻译中…

The first line contains two integers $*n*$ and $*q*$ ($2 ≤ *n* ≤ 6$, $1 ≤ *q* ≤ 36$) — the length of the initial string and the number of available operations.

翻译中…

The next $*q*$ lines describe the possible operations. The $*i*$-th of them contains two strings $*a*_{*i*}$ and $*b*_{*i*}$ ($|*a*_{*i*}| = 2, |*b*_{*i*}| = 1$). It's guaranteed that $*a*_{*i*} ≠ *a*_{*j*}$ for $*i* ≠ *j*$ and that all $*a*_{*i*}$ and $*b*_{*i*}$ consist of only first six lowercase English letters.

翻译中…

Output

翻译中…

Print the number of strings of length $*n*$ that Limak will be able to transform to string "a" by applying only operations given in the input.

翻译中…

Note

翻译中…

In the first sample, we count initial strings of length $3$ from which Limak can get a required string "a". There are $4$ such strings: "abb", "cab", "cca", "eea". The first one Limak can compress using operation $1$ two times (changing "ab" to a single "a"). The first operation would change "abb" to "ab" and the second operation would change "ab" to "a".

翻译中…

Other three strings may be compressed as follows:

翻译中…
  • "cab" image "ab" image "a"
  • "cca" image "ca" image "a"
  • "eea" image "ca" image "a"
翻译中…

In the second sample, the only correct initial string is "eb" because it can be immediately compressed to "a".

翻译中…

样例

Input #1
3 5
ab a
cc c
ca a
ee c
ff d
Output #1
4
InputCopy OutputCopy
Input #2
2 8
af e
dc d
cc f
bc b
da b
eb a
bb b
ff c
Output #2
1
InputCopy OutputCopy
Input #3
6 2
bb a
ba a
Output #3
0
InputCopy OutputCopy
题目信息
题号
653B
时间限制
2 s
内存限制
256 MB
标签
暴力
DFS 及类似
动态规划
字符串

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。