#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr(7, 0);
string s;
while(getline(cin, s))
{
int n = s.length(),num=0;
vector<int> ips; //记录ip地址的数字
bool bad = false,isnum = false;
for(int i = 0; i < n; i++)
{
if(isdigit(s[i]))
{
isnum = true;
num = num * 10 + s[i] - '0';
}
else if(s[i] == '.' || s[i] == '~')
{
if(isnum)
{
ips.push_back(num);
isnum = false;
num = 0;
}
else
{
arr[5]++;//没有数字
bad = true;
break;
}
}
else//非法字符
{
arr[5]++;
isnum = false;
bad = true;
break;
}
}
if(isnum)ips.push_back(num); //最后一个数字
if(ips[0] == 0 || ips[0] == 127 || bad)
continue; //忽略
int mask = 4; //查看掩码的数字
for(;mask < 8 && ips[mask] == 255;mask++); //找到掩码第一个不全为1的数
if(mask == 4||mask == 8)
{
arr[5]++;
continue;
}
if(ips[mask] == 254 || ips[mask] == 252 || ips[mask] == 248 || ips[mask] == 240 || ips[mask] == 224 || ips[mask] == 191 || ips[mask] == 128)
mask++; //各类掩码含1的最后一位
for(;mask < 8 && ips[mask] == 0;mask++);
if(mask != 8)
{
arr[5]++;
continue;
}
if(ips[0] >= 1 && ips[0] <= 126)arr[0]++; //A类地址
else if(ips[0] >= 128 && ips[0] <= 191)arr[1]++; //B类地址
else if(ips[0] <= 223)arr[2]++; //C类地址
else if(ips[0] <= 239)arr[3]++; //D类地址
else if(ips[0] <= 255)arr[4]++; //E类地址
if(ips[0]==10||ips[0]==172&&ips[1]>=16&&ips[1]<=31||ips[0]==192&&ips[1]==168)arr[6]++; //私网地址
}
for(int i = 0; i < 7; i++)
if(i != 6)cout<<arr[i]<<" ";
else cout<<arr[i]<<endl;
}