//密码检查
#include<string.h>
int main()
{
//输入要判断的密码个数
int n = 0;
scanf("%d", &n);
//定义字符数组
char arr[100] = { 0 };
//输入密码
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%s", arr);
//定义三个变量来帮助1、3要求判断
int a = 0;
int b = 0;
int c = 0;
//判断要求2和4
//密码不能以数字开头
//密码长度至少为8
//计算数组元素个数
int sz = strlen(arr);
if (arr[0] >= '0' && arr[0] <= '9'||sz<8)
{
printf("NO\n");
//此处用continue的作用是我们可能输入多个密码,需要进行依次判断
//要是用break的话,当我们判断完第一个密码后,后面的密码就不判断了
continue;
}
//对1、3要求判断
int j = 0;
for (j = 0; j < sz; j++)
{
//每次arr[i]的值进行判断为以下三种情况,赋值对应的变量
if (arr[j] >= '0' && arr[j] <= '9')
{
//条件成立则将a赋值为1
a = 1;
}
else if (arr[j] >= 'a' && arr[j] <= 'z')
{
//条件成立则将b赋值为1
b = 1;
}
else if (arr[j] >= 'A' && arr[j] <= 'Z')
{
//条件成立则将c赋值为1
c = 1;
}
//当发现arr[i]的值出现不为以上其中一种情况时(1要求)
else
{
printf("NO\n");
continue;
}
}
//跳出循环,判断3情况
//此时变量a、b、c的作用就出来了
if (2 >= a + b + c)
{
printf("YES\n");
continue;
}
else
{
printf("NO\n");
continue;
}
}
return 0;
}