#!/usr/bin/env python3 from fractions import Fraction tab={(1,1):(0,-1),(2,2):(0,-1),(3,3):(0,-1),(1,2):(3,1),(2,1):(3,-1),(2,3):(1,1),(3,2):(1,-1),(3,1):(2,1),(1,3):(2,-1)} def mul(a,b): if a[0]==0: return (b[0],a[1]*b[1]) if b[0]==0: return (a[0],a[1]*b[1]) k,s=tab[(a[0],b[0])] return (k,a[1]*b[1]*s) letters=[((1,1),2,1),((1,-1),-2,-1),((2,1),-1,2),((2,-1),1,-2)] inv=[1,0,3,2] dp={} for e,(q,a,b) in enumerate(letters): dp[(e,e,q,a,b)]=1 for pos in range(1,12): nd={} for (f,l,q,x,y),c in dp.items(): for g,(qq,aa,bb) in enumerate(letters): if g==inv[l]: continue key=(f,g,mul(q,qq),x+aa,y+bb) nd[key]=nd.get(key,0)+c dp=nd S=0 N=0 for (f,l,q,x,y),c in dp.items(): if l==inv[f]: continue if q!=(0,-1): continue if (x+2*y)%5: continue e=(abs(2*x-y)+abs(x+2*y)+abs(-3*x-y))//2 S+=e*c N+=c print(S,N,Fraction(S,24))