import java.io.*;
public class Main{
static int[] res = new int[7];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while((str = br.readLine())!=null) {
count(str);
}
StringBuilder sb = new StringBuilder();
for(int i : res) sb.append(i).append(' ');
System.out.print(sb.toString());
}
static void count(String str) {
String[] ss = str.split("~");
if(!isValidCover(ss[1])) {
if(isValid(ss[0])) {
String t = ss[0].split("\\.")[0];
if(t.equals("0") || t.equals("127")) return;
else res[5]++;
}else res[5]++;
}
else {
if (!isValid(ss[0])) res[5]++;
else CountIp(ss[0]);
}
// 掩码仅仅检验了是不是合法,没检验是不是该ip对应的掩码
}
// 有四个被三个点号分开的整数且都在[0,255]范围内
static boolean isValid(String s) {
if(!s.contains(".")) return false;
String[] ss = s.split("\\.");
if(ss.length != 4) return false;
for(String si : ss) {
if(si.length() == 0) return false;
else {
// 默认都是数字没有其他字符
int t = Integer.parseInt(si);
if(t < 0 || t > 255) return false;
}
}
return true;
}
// 检验ip地址同时计数
static void CountIp(String s) {
if(!isValid(s)) {
return;
}
else {
String[] ss = s.split("\\.");
// 【0.*.*.*】和【127.*.*.*】的IP地址不属于上述输入的任意一类
if(Integer.parseInt(ss[0]) == 0 || Integer.parseInt(ss[0]) == 127) return;
int ip0 = Integer.parseInt(ss[0]);
if(ip0 <= 126) res[0]++;
else if(ip0 <= 191) res[1]++;
else if(ip0 <= 223) res[2]++;
else if(ip0 <= 239) res[3]++;
else res[4]++;
// 私有地址
if(ip0 == 10
|| (ip0 == 172 && Integer.parseInt(ss[1]) <= 31 && Integer.parseInt(ss[1]) >= 16)
|| (ip0 == 192 && Integer.parseInt(ss[1]) == 168)
){
res[6]++;
}
}
}
static boolean isValidCover(String s) {
if(!isValid(s)) return false;
else {
// 先排除这两个非法掩码
if(s.equals("255.255.255.255")
|| s.equals("0.0.0.0")) return false;
StringBuilder sb = new StringBuilder();
String[] ss = s.split("\\.");
for(String si : ss) {
String temp = Integer.toBinaryString(Integer.parseInt(si));
// 不足八位的在前面补零
int len = temp.length();
while(len++ < 8) temp = "0" + temp;
sb.append(temp);
}
char[] ch = sb.toString().toCharArray();
for(int i = 0; i < ch.length; i++) {
// 如果前一位为0后一位为1,掩码非法
if(i > 0 && ch[i-1] == '0' && ch[i] == '1') return false;
}
return true;
}
}
}