#include<iostream>
#include<algorithm>
#include<sstream>
#include<vector>
#include<cctype>
#include<bitset>
using namespace std;
vector<string> spliteToString(string str,char c)
{
    vector<string> res;
    istringstream is(str);
    string temp;
    while(getline(is, temp,c)) res.push_back(temp);
    return res;
}
//是否纯数字
bool isNumb(string str)
{
    for(int i=0;i<str.length();i++)
    {
        if(!isdigit(str[i])) return false;
    }
    return true;
}
int main(int argc,char* argv[])
{
    vector<int> result(7,0);
    string inputStr;
    while(getline(cin,inputStr))
    {
        replace(inputStr.begin(),inputStr.end(),'~','.');
        vector<string> strV=spliteToString(inputStr,'.');
        vector<int> ips;
        bool isbad=false;
        string preValue="";
        for(int i=0;i<strV.size();i++)
        {
            if(strV[i].empty()){
                isbad=true;
                break;
            }else if(!isNumb(strV[i]))
            {
               isbad=true;
                break; 
            }else{
                int numb=strtol(strV[i].c_str(),NULL,10);
                if(numb>255){
                    isbad=true;
                    break; 
                }
                ips.push_back(numb);
                if(ips.size()>4)
                {
                    bitset<8> t(numb);
                    preValue+=t.to_string();
                }
            }
        }
        //1、忽略0或者127开头的地址
        if(ips[0]==0 || ips[0]==127) continue;
        //2、错误ip:数字不能超过255;非纯数字;空字符串
        if(isbad) {
            result[5]++;
            continue;
        }
        //掩码://不能全是1;不能全是0;从大到小排序后和原来一致
        string lastValue=string(preValue);
        sort(lastValue.begin(),lastValue.end(),[](char p1,char p2){return p1>p2;});
        if(preValue.compare(lastValue)!=0 || preValue=="11111111111111111111111111111111" || preValue=="00000000000000000000000000000000")
        {
            result[5]++;//非法掩码
            continue;
        }
        //4、A-E类
        if(ips[0] >= 1 && ips[0] <= 126)
            result[0]++; //A类地址
        else if(ips[0] >= 128 && ips[0] <= 191) 
            result[1]++; //B类地址
        else if(ips[0] >= 192 && ips[0] <= 223) 
            result[2]++; //C类地址
        else if(ips[0] >= 224 && ips[0] <= 239) 
            result[3]++; //D类地址
        else if(ips[0] >= 240 && ips[0] <= 255) 
            result[4]++; //E类地址
        //5、是否私有
        if(ips[0] == 10) 
            result[6]++; //私有地址10开头的
        else if(ips[0] == 172 && (ips[1] >= 16 && ips[1] <= 31)) 
            result[6]++; //私有地址172.16.0.0-172.31.255.255
        else if(ips[0] == 192 && ips[1] == 168) 
            result[6]++; //私有地址192.168.0.0-192.168.255.255 
    }
    cout<<result[0]<<" "<<result[1]<<" "<<result[2]<<" "<<result[3]
        <<" "<<result[4]<<" "<<result[5]<<" "<<result[6]<<endl;
    return 0;
}