import java.util.Scanner;
public class Main {
static int ipA = 0, ipB = 0, ipC = 0, ipD = 0, ipE = 0, ipOrMaskFlase = 0, ipSelf = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String[] ips = sc.nextLine().split("~");
if (!isMaskValid(ips[1]) || !isIpValid(ips[0])) {
ipOrMaskFlase++;
// 本题特殊 类似 "0.*.*.*" 和"127.*.*.*" 的 IP 地址不计入任何类别,也不计入非法统计,直接跳过;
if (jump(ips[0])){
ipOrMaskFlase--;
}
} else {
defineType(ips[0]);
}
}
System.out.println(ipA + " " + ipB + " " + ipC + " " + ipD + " " + ipE + " " + ipOrMaskFlase + " " + ipSelf);
}
private static void defineType(String ip) {
String[] nums = ip.split("\\.");
int ipFirst = Integer.parseInt(nums[0]);
int ipSecond = Integer.parseInt(nums[1]);
if (ipFirst == 0 || ipFirst == 127) {
return;
}
if (ipFirst >= 0 && ipFirst <= 127) {
if (ipFirst == 10) {
ipSelf++;
}
ipA++;
}
if (ipFirst >= 128 && ipFirst <= 191) {
if (ipFirst == 172 && ipSecond >= 16 && ipSecond <= 31) {
ipSelf++;
}
ipB++;
}
if (ipFirst >= 192 && ipFirst <= 223) {
if (ipFirst == 192 && ipSecond == 168) {
ipSelf++;
}
ipC++;
}
if (ipFirst >= 224 && ipFirst <= 239) {
ipD++;
}
if (ipFirst >= 240 && ipFirst <= 255) {
ipE++;
}
}
private static boolean isIpValid(String ip) {
String[] nums = ip.split("\\.");
for (String num : nums) {
if (num.isEmpty()) {
return false;
}
if (Integer.parseInt(num) > 255 || Integer.parseInt(num) < 0) {
return false;
}
}
return true;
}
private static boolean isMaskValid(String maskCode) {
if (!isIpValid(maskCode)) {
return false;
}
String[] nums = maskCode.split("\\.");
String totalBinStr = "";
for (String num : nums) {
String binStr = Integer.toBinaryString(Integer.parseInt(num));
while (binStr.length() < 8) {
binStr = "0" + binStr;
}
totalBinStr += binStr;
}
if (!totalBinStr.contains("0") || !totalBinStr.contains("1")) {
return false;//注意,全为 1 或全为 0 的掩码也视为非法。
}
int count = 0;
for (char c : totalBinStr.toCharArray()) {
if (c == '1') {
count++;
}
}
//最后一个1的位置 等于 所有1的数量-1
if ((count - 1) == totalBinStr.lastIndexOf("1")) {
return true;
}
return false;
}
private static boolean jump(String ip) {
String[] nums = ip.split("\\.");
int ipFirst = Integer.parseInt(nums[0]);
if (ipFirst == 0 || ipFirst == 127) {
return true;
}
return false;
}
}