#Tips:
#十进制数据转二进制:bin(a),a为十进制数,返回值为带有0b前缀的二进制数字字符串
#int函数做字符串转数字时参数不能为空
#有时候在Try...except...结构中,代码出错他不会给你抛出,debug时需要注意

#思路:
#先特判是否不计数;
#非不计数ip则再判断子网掩码是否正确,因为如果掩码不对直接就是错误ip了,不需要判断abcde和私有ip;
#如果掩码正确则独立判断abcde和私网IP

#检查ip函数1
def checkip1(ip):
    a=ip.split(".")
    for i in range(len(a)):
        if len(a[i])==0:#避免为空时直接使用int导致程序出错而退出Try
            return "W"
        else:
            a[i]=int(a[i])
    #判断ABCDE类
    if 1<=a[0]<=126 and 0<=a[1]<=255 and 0<=a[2]<=255 and 0<=a[3]<=255:
        return "A"
    elif 128<=a[0]<=191 and 0<=a[1]<=255 and 0<=a[2]<=255 and 0<=a[3]<=255:
        return "B"
    elif 192<=a[0]<=223 and 0<=a[1]<=255 and 0<=a[2]<=255 and 0<=a[3]<=255:
        return "C"
    elif 224<=a[0]<=239 and 0<=a[1]<=255 and 0<=a[2]<=255 and 0<=a[3]<=255:
        return "D"
    elif 240<=a[0]<=255 and 0<=a[1]<=255 and 0<=a[2]<=255 and 0<=a[3]<=255:
        return "E"
    else:
        return "W"
#检查ip函数2
def checkip2(ip):
    a=ip.split(".")
    for i in range(len(a)):
        if len(a[i])==0:
            return False
        else:
            a[i]=int(a[i])
    #判断私有ip
    p1= a[0]==10 and 0<=a[1]<=255 and 0<=a[2]<=255 and 0<=a[3]<=255
    p2= a[0]==172 and 16<=a[1]<=31 and 0<=a[2]<=255 and 0<=a[3]<=255
    p3= a[0]==192 and a[1]==168 and 0<=a[2]<=255 and 0<=a[3]<=255
    if p1 or p2 or p3:
        return True

#检查子网掩码函数
def checksub(sub):
    a=sub.split(".")
    #转数字之后转二进制
    for i in range(len(a)):
        if len(a[i])==0:
            return False
        else:
            a[i]=int(a[i])
            a[i]=bin(a[i])[2:]
            a[i]="0"*(8-len(a[i]))+a[i]#对有些不足8位的部分补全
    b="".join(a)
    #判断子网掩码是不是前面全1后面全0
    #思路:特判+使用“10”分割,判断前面是全1并且后面是全0
    if len(b)==b.count("1") or len(b)==b.count("0"):#特判全1或者全0
        return False
    elif b[0]=="1" and len(b[1:])==b.count("0"):#特判只有开头一个1
        return True
    elif b[-1]=="0" and len(b[:-1])==b.count("1"):#特判只有末尾一个0
        return True
    else:
        b1=b.split("10")#切割开之后的列表
        b2=b1[0]#前半部分
        b3=b1[1]#后半部分
        if len(b1)==2 and len(b2)==b2.count("1") and len(b3)==b3.count("0"):
            return True
        else:
            return False


Al=Bl=Cl=Dl=El=Wr=Pr=0#初始化各数量


while True:
    try:
        a=input().split("~")
        ip=a[0]
        sub=a[1]
        #特判不计数ip
        if ip[0]=="0" or ip[0:3]=="127":
            continue
        else:
            #判断子网掩码
            if checksub(sub):
                #先判断私网IP
                if checkip2(ip):
                    Pr+=1
                #再判断是否为ABCDE类ip或错误ip
                if checkip1(ip)=="A":
                    Al+=1
                elif checkip1(ip)=="B":
                    Bl+=1
                elif checkip1(ip)=="C":
                    Cl+=1
                elif checkip1(ip)=="D":
                    Dl+=1
                elif checkip1(ip)=="E":
                    El+=1
                elif checkip1(ip)=="W":
                    Wr+=1
            else:
                Wr+=1
    except:
        print(Al,Bl,Cl,Dl,El,Wr,Pr)
        break