package main

import (
	"bufio"
	"fmt"
	"os"
	"regexp"
	"strings"
)

func main() {
	ips := stdinToStringSlice()
	var allowTLS []string
	var allowSSL []string
	for _, ip := range ips {
		if hasTLS(ip) {
			allowTLS = append(allowTLS, ip)
		}
		if hasSSL(ip) {
			allowSSL = append(allowSSL, ip)
		}
	}
	fmt.Println("IPs supporting TLS: ", len(allowTLS))
	fmt.Println("IPs supporting SSL: ", len(allowSSL))
}

func hasTLS(ip string) bool {
	bad := false
	hprSq := getHypernetSqns(ip)
	for _, hpr := range hprSq {
		if hasABBA(hpr) {
			return false
		}
	}
	if !bad && hasABBA(ip) {
		return true
	}
	return false
}

func hasSSL(ip string) bool {
	hprSq := getHypernetSqns(ip)
	rest := cutHypernetSqns(ip, hprSq)
	for i := range rest {
		if len(rest) > i+2 {
			if rest[i] == rest[i+2] && rest[i] != rest[i+1] {
				bab := string(rest[i+1]) + string(rest[i]) + string(rest[i+1])
				for j := range hprSq {
					if strings.Contains(hprSq[j], bab) {
						return true
					}
				}
			}
		}
	}
	return false
}

func getHypernetSqns(ip string) []string {
	var ret []string
	re := regexp.MustCompile(`\[[^\[]*\]`)
	s := re.FindAll([]byte(ip), -1)

	for i := range s {
		ret = append(ret, string(s[i][1:len(s[i])-1]))
	}
	return ret
}

func cutHypernetSqns(ip string, hpn []string) string {
	for i := range hpn {
		ip = strings.Replace(ip, hpn[i], "", -1)
	}
	return ip
}

func hasABBA(ip string) bool {
	for j := range ip {
		if len(ip) > j+3 {
			if ip[j] == ip[j+3] && ip[j+1] == ip[j+2] && ip[j] != ip[j+1] {
				return true
			}
		}
	}
	return false
}

func stdinToStringSlice() []string {
	var input []string
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		input = append(input, scanner.Text())
	}
	return input
}
