#X3043. 查找表达式

查找表达式

Description

在一些高级的记事本中,支持使用表达式来支持高级的查找。

这里我们定义一个特殊的表达式----VX表达式。

该表达式做如下规定,

1.该表达式仅用来匹配纯英文字符串(区分大小写)。

2.在表达式中出现字母代表字母本身,下面列出的特殊字符以及特殊格式有特殊含义。

*代表任意一个字母。

例如:表达式*bc

可以成功匹配abc,bbc,bbbc

(bbbc能够成功匹配是因为存在bbc,这部分符合VX表达式)

[...]形如这种格式的,将被解释为一个集合。并且集合中元素支持使用'-'字符来描述一段连续的元素。(一段连续的元素可以是a-z和A-Z中的一部分,我们认为A-z不是一段连续的元素,因此也不会出现A-z这样跨越大小写的)

例如表达式[a-zA-z]和*是等价的

表达式[a-z]匹配一个小写英文字母

表达式[A-K]匹配一个大写的A到K范围内的一个英文字母。

表达式[aAzZ]匹配一字母,该字母只能是a,A,z和Z

(成功匹配:指目标字符串符合表达式定义的规则。)

现在给定一个表达式和若干字符串,判断这些字符串能不能匹配。

(如果字符串长度不足以匹配完表达式也算匹配失败,例如表达式abc不能成功匹配ab)

Format

Input

第一行,一个表达式。(长度不超过20)

第二行,一个数字K,表示有K个字符串要尝试匹配。

接下来K行,每行一个字符串。(长度不超过20)

Output

一共有K行。

如果第K个字符串能成功匹配,则在第K行输出YES,否则输出NO。

Samples

oz*A[A-Z][B-Z]***
2
ozzAAAozn
oznACMozn
NO
YES

Limitation

1s, 1024KiB for each test case.