import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int[] arr = new int[7];
out: while(scanner.hasNext()){
String str = scanner.nextLine();
String[] splits = str.split("~");
if(splits.length != 2){
arr[5]++;
continue;
}
//判断IP地址是否有错误
String[] ip = splits[0].split("\\.");
if(ip.length != 4){
arr[5]++;
continue;
}
int[] ipNum = new int[4];
for(int i = 0; i < 4; i++){
if(!ip[i].isEmpty()){
int num = Integer.parseInt(ip[i]);
if(num >= 0 && num <= 255){
ipNum[i] = num;
}else{
arr[5]++;
continue out;
}
}else{
arr[5]++;
continue out;
}
}
//判断子网掩码是否有错误
String[] mark = splits[1].split("\\.");
if(mark.length != 4){
arr[5]++;
continue;
}
StringBuilder markStr = new StringBuilder();
for(int i = 0; i < 4; i++){
String s = Integer.toBinaryString(Integer.parseInt(mark[i]));
if(s.length() < 8){
int j = s.length();
while(j < 8){
markStr.append("0");
j++;
}
}
markStr.append(Integer.toBinaryString(Integer.parseInt(mark[i])));
}
int n = markStr.length();
boolean flag0 = false;
for(int i = 0; i < n; i++){
if(markStr.charAt(i) == '0'){
flag0 = true;
}else{
if(flag0){//前面有0出现
arr[5]++;
continue out;
}
}
}
if(!flag0){
arr[5]++;
continue;
}
//判断网络类型
if(ipNum[0] >= 1 && ipNum[0] < 127){
arr[0]++;
}else if(ipNum[0] >= 128 && ipNum[0] < 192){
arr[1]++;
}else if(ipNum[0] >= 192 && ipNum[0] < 224){
arr[2]++;
}else if(ipNum[0] >= 224 && ipNum[0] < 240){
arr[3]++;
}else if(ipNum[0] >= 240 && ipNum[0] <= 255){
arr[4]++;
}
//判断私有IP
if(ipNum[0] == 10 || (ipNum[0] == 172 && ipNum[1] >= 16 && ipNum[1] <= 31)
|| (ipNum[0] == 192 && ipNum[1] == 168)){
arr[6]++;
}
}
scanner.close();
System.out.println(arr[0] + " " + arr[1] + " " + arr[2]
+ " " + arr[3] + " " + arr[4] + " " + arr[5]
+ " " + arr[6]);
}
}