编程介的小学生 2017-08-28 04:53 采纳率: 20.5%
浏览 764
已采纳

The Best Name for Your Baby

n the year 29XX, the government of a small country somewhere on the earth introduced a law restricting first names of the people only to traditional names in their culture, in order to preserve their cultural uniqueness. The linguists of the country specifies a set of rules once every year, and only names conforming to the rules are allowed in that year. In addition, the law also requires each person to use a name of a specific length calculated from one��s birth date because otherwise too many people would use the same very popular names. Since the legislation of that law, the common task of the parents of new babies is to find the name that comes first in the alphabetical order among the legitimate names of the given length because names earlier in the alphabetical order have various benefits in their culture.

Legitimate names are the strings consisting of only lowercase letters that can be obtained by repeatedly applying the rule set to the initial string ��S��, a string consisting only of a single uppercase S.

Applying the rule set to a string is to choose one of the rules and apply it to the string. Each of the rules has the form A �� ��, where A is an uppercase letter and �� is a string of lowercase and/or uppercase letters. Applying such a rule to a string is to replace an occurrence of the letter A in the string to the string ��. That is, when the string has the form ����A����, where �� and �� are arbitrary (possibly empty) strings of letters, applying the rule rewrites it into the string ���¦�����. If there are two or more occurrences of A in the original string, an arbitrary one of them can be chosen for the replacement.

Below is an example set of rules.

S �� aAB (1)
A �� (2)
A �� Aa (3)
B �� AbbA (4)
Applying the rule (1) to ��S��, ��aAB�� is obtained. Applying (2) to it results in ��aB��, as A is replaced by an empty string. Then, the rule (4) can be used to make it ��aAbbA��. Applying (3) to the first occurrence of A makes it ��aAabbA��. Applying the rule (2) to the A at the end results in ��aAabb��. Finally, applying the rule (2) again to the remaining A results in ��aabb��. As no uppercase letter remains in this string, ��aabb�� is a legitimate name.

We denote such a rewriting process as follows.

S��(1)aAB��(2)aB��(4)aAbbA��(3)aAabbA��(2)aAabb��(2)aabb

Linguists of the country may sometimes define a ridiculous rule set such as follows.

S �� sA (1)
A �� aS (2)
B �� b (3)
The only possible rewriting sequence with this rule set is:

S��(1)sA��(2)saS��(1)sasA��(2)��

which will never terminate. No legitimate names exist in this case. Also, the rule (3) can never be used, as its left hand side, B, does not appear anywhere else.

It may happen that no rules are supplied for some uppercase letters appearing in the rewriting steps. In its extreme case, even S might have no rules for it in the set, in which case there are no legitimate names, of course. Poor nameless babies, sigh!

Now your job is to write a program that finds the name earliest in the alphabetical order among the legitimate names of the given length conforming to the given set of rules.

Input

The input is a sequence of datasets, followed by a line containing two zeros separated by a space representing the end of the input. Each dataset starts with a line including two integers n and l separated by a space, where n (1 �� n �� 50) is the number of rules and l (0 �� l �� 20) is the required length of the name. After that line, n lines each representing a rule follow. Each of these lines starts with one of uppercase letters, A to Z, followed by the character ��=�� (instead of ����) and then followed by the right hand side of the rule which is a string of letters A to Z and a to z. The length of the string does not exceed 10 and may be zero. There appears no space in the lines representing the rules.

Output

The output consists of the lines showing the answer to each dataset in the same order as the input. Each line is a string of lowercase letters, a to z, which is the first legitimate name conforming to the rules and the length given in the corresponding input dataset. When the given set of rules has no conforming string of the given length, the corresponding line in the output should show a single hyphen, ��-��. No other characters should be included in the output.

Sample Input

4 3
A=a
A=
S=ASb
S=Ab
2 5
S=aSb
S=
1 5
S=S
1 0
S=S
1 0
A=
2 0
A=
S=AA
4 5
A=aB
A=b
B=SA
S=A
4 20
S=AAAAAAAAAA
A=aA
A=bA
A=
0 0
Sample Output

abb

aabbb
aaaaaaaaaaaaaaaaaaaa

  • 写回答

1条回答

  • threenewbee 2017-09-11 15:43
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!