"""GESP Python 三级认证试题(202306)

第 2 题
【问题描述】
(1)网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。
(2)合法的密码只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间10个数字以及!@#$四个特殊字母构成。
(3)密码最短长度:6 个字符,密码最大长度:12 个字符。
(4)大写字母、小写字母和数字必须有其中两种,以及至少有四个特殊字符中的一个。

【输入描述】
(1)输入以英文逗号分隔的多个字符组合作为被检测密码。输入时的逗号都作为分隔符,不被视作检验密码本身。
(2)特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有 input()函数不可有提示信息。
【输出描述】
(1)逐行输出 0 个或多个合规的密码。
(2)输出顺序以输入字符串出现先后为序,即先出现则先输出。

【样例输入 1】
seHJ12!@,sjdkffH$123,sdf!@^&12 HDH,123&^YUhg@!
【样例输出 1】
seHJ12!@
sjdkffH$123

"""

PS = input().split(",")

for s in PS:

    LS = len(s)
    if not(LS >= 6 and LS <= 12):
        continue
    
    lowerCnt = upperCnt = digitCnt = specialCnt = False

    """ 方案1
    ms = list(s)
    for c in s:
        if c >= 'a' and c <= 'z':
            lowerCnt = True
            ms.remove(c)
        elif c >= 'A' and c <= 'Z':
            upperCnt = True
            ms.remove(c)
        elif c >= '0' and c <= '9':
            digitCnt = True
            ms.remove(c)
        elif c in '!@#$':
            specialCnt = True
            ms.remove(c)
    
    if len(ms) != 0:
        continue
    """    
    
    # 方案2
    
    otherCnt = False
    for c in s:
        if c >= 'a' and c <= 'z':
            lowerCnt = True
        elif c >= 'A' and c <= 'Z':
            upperCnt = True
        elif c >= '0' and c <= '9':
            digitCnt = True
        elif c in '!@#$':
            specialCnt = True
        else:
            otherCnt = True
            break
        
    if otherCnt == True:
        continue
    
    if lowerCnt + upperCnt + digitCnt >= 2 and specialCnt == True:
        print(s)