Bear and Compressing

题意翻译

题目大意: 长度为n的字符串(字符串中只有abcdef共6种字母),有q种压缩方式,可以将字符串的前两个字符压成1个字符,求凭借这q种压缩方式,有几种长度为n的字符串最终能被压缩成字符'a'. 输入格式: 第一行输入两个整数n(2<=n<=6)和q(1<=q<=36),代表压缩前字符串的长度以及压缩方式的种类数 接下来q行,每行两个字符串,长度分别为2和1,只有abcdef共6种字母,代表前面的字符串可以压缩成后面的字符串 输出格式: 输出长度为n的符合条件的字符串种类数 说明: 在第一个样例中,符合条件的长度为3的字符串有4中,“abb”,“cab”,“cca”,“eea” “abb” —> “ab” —> “a” “cab” —> “ab” —> “a” “cca” —> “ca” —> “a” “eea” —> “ca” —> “a” 感谢@李东晓 提供的翻译

题目描述

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.

输入输出格式

输入格式


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.

输出格式


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.

输入输出样例

输入样例 #1

3 5
ab a
cc c
ca a
ee c
ff d

输出样例 #1

4

输入样例 #2

2 8
af e
dc d
cc f
bc b
da b
eb a
bb b
ff c

输出样例 #2

1

输入样例 #3

6 2
bb a
ba a

输出样例 #3

0

说明

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" ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF653B/355fee5161a1808ee95ea5dc6d815d4071657131.png) "ab" ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF653B/355fee5161a1808ee95ea5dc6d815d4071657131.png) "a" - "cca" ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF653B/355fee5161a1808ee95ea5dc6d815d4071657131.png) "ca" ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF653B/355fee5161a1808ee95ea5dc6d815d4071657131.png) "a" - "eea" ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF653B/355fee5161a1808ee95ea5dc6d815d4071657131.png) "ca" ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF653B/355fee5161a1808ee95ea5dc6d815d4071657131.png) "a" In the second sample, the only correct initial string is "eb" because it can be immediately compressed to "a".