fn main [ var lines := list_break_to_lines(read_lazy(h[0])); var conn := treeset_init(tuple2(int, int)); for l in lines do [ var c1 := 26 * (l[0] - 'a') + (l[1] - 'a'); var c2 := 26 * (l[3] - 'a') + (l[4] - 'a'); conn := treeset_set(conn, mktuple2(c1, c2)); conn := treeset_set(conn, mktuple2(c2, c1)); ] var set3 := treeset_init(list(int)); for c in conn do [ for q := 0 to ipower(26, 2) do [ if treeset_test(conn, mktuple2(c.v1, q)), treeset_test(conn, mktuple2(c.v2, q)) then [ var a := [ c.v1, c.v2, q ]; a := list_sort(a); set3 := treeset_set(set3, a); ] ] ] var count := 0; for s in set3 do [ if s[0] div 26 = 't' - 'a' or s[1] div 26 = 't' - 'a' or s[2] div 26 = 't' - 'a' then count += 1; ] write(h[1], ntos(count) + nl); ]