import itertools
lines="""\
B1,C1,A,C4,B4
B2,C2,A,C5,B5
B3,C3,A,C6,B6
D1,A,D4
D2,A,D5
D3,A,D6
B1,D1,C2,D2,B3
B2,D2,C3,D3,B4
B3,D3,C4,D4,B5
B4,D4,C5,D5,B6
B5,D5,C6,D6,B1
B6,D6,C1,D1,B2"""
lines = frozenset(frozenset(line.split(",")) for line in lines.split("\n"))
points = frozenset(itertools.chain.from_iterable(lines))
cnt = 0
fnd = dict()
for a, b, c in itertools.combinations(points, 3):
if (any(a in line and b in line and not c in line for line in lines) and
any(a in line and c in line for line in lines) and
any(b in line and c in line for line in lines)):
cnt += 1
key = ''.join(sorted((a[0], b[0], c[0])))
fnd.setdefault(key, 0)
fnd[key] += 1
for k, v in sorted(fnd.items()):
print("{:3d} × {}".format(v, k))
print("{:3d} TOTAL".format(cnt))
aW1wb3J0IGl0ZXJ0b29scwpsaW5lcz0iIiJcCkIxLEMxLEEsQzQsQjQKQjIsQzIsQSxDNSxCNQpCMyxDMyxBLEM2LEI2CkQxLEEsRDQKRDIsQSxENQpEMyxBLEQ2CkIxLEQxLEMyLEQyLEIzCkIyLEQyLEMzLEQzLEI0CkIzLEQzLEM0LEQ0LEI1CkI0LEQ0LEM1LEQ1LEI2CkI1LEQ1LEM2LEQ2LEIxCkI2LEQ2LEMxLEQxLEIyIiIiCmxpbmVzID0gZnJvemVuc2V0KGZyb3plbnNldChsaW5lLnNwbGl0KCIsIikpIGZvciBsaW5lIGluIGxpbmVzLnNwbGl0KCJcbiIpKQpwb2ludHMgPSBmcm96ZW5zZXQoaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUobGluZXMpKQpjbnQgPSAwCmZuZCA9IGRpY3QoKQpmb3IgYSwgYiwgYyBpbiBpdGVydG9vbHMuY29tYmluYXRpb25zKHBvaW50cywgMyk6CiAgICBpZiAoYW55KGEgaW4gbGluZSBhbmQgYiBpbiBsaW5lIGFuZCBub3QgYyBpbiBsaW5lIGZvciBsaW5lIGluIGxpbmVzKSBhbmQKICAgICAgICBhbnkoYSBpbiBsaW5lIGFuZCBjIGluIGxpbmUgZm9yIGxpbmUgaW4gbGluZXMpIGFuZAogICAgICAgIGFueShiIGluIGxpbmUgYW5kIGMgaW4gbGluZSBmb3IgbGluZSBpbiBsaW5lcykpOgogICAgICAgIGNudCArPSAxCiAgICAgICAga2V5ID0gJycuam9pbihzb3J0ZWQoKGFbMF0sIGJbMF0sIGNbMF0pKSkKICAgICAgICBmbmQuc2V0ZGVmYXVsdChrZXksIDApCiAgICAgICAgZm5kW2tleV0gKz0gMQpmb3IgaywgdiBpbiBzb3J0ZWQoZm5kLml0ZW1zKCkpOgogICAgcHJpbnQoIns6M2R9IMOXIHt9Ii5mb3JtYXQodiwgaykpCnByaW50KCJ7OjNkfSBUT1RBTCIuZm9ybWF0KGNudCkp