Solving Rubik’s UFO

Pensieve Header: Solving Rubik’s UFO.

n=12; 
(Subscript[g, 1])=Cycles[{{1,9},{2,8},{3,7}}];
(Subscript[g, 2])=Cycles[{{1,2,3,4,5,6}}];
(Subscript[g, 3])=Cycles[{{1,2,3,4,5,6},{7,8,9,10,11,12}}];

σ_∘τ_ := PermutationProduct[τ, σ];
Feed[Cycles[{}]]:=Null;
Feed[τ_]:=Module[{i,j,k,l},
i=Min[PermutationSupport[τ]];
j=PermutationReplace[i, τ];
If[Head[(Subscript[σ, i,j])]===Cycles,
Feed[InversePermutation[(Subscript[σ, i,j])]∘τ],
(*Else*) (Subscript[σ, i,j])=τ;
For[k=1, k<n, ++k,
For[l=k+1, l≤n, ++l,
If[Head[(Subscript[σ, k,l])]===Cycles,
Feed[(Subscript[σ, i,j])∘(Subscript[σ, k,l])]; Feed[(Subscript[σ, k,l])∘(Subscript[σ, i,j])]]
]]
]];
$RecursionLimit=∞;

Table[Feed[(Subscript[g, α])];(∏_(i=1)^n)(1+Count[Range[n], j_ /; Head[(Subscript[σ, i,j])]==Cycles]), {α, 3}]

12!

12!/362880

1320/24

12 11 10

9!

ImageCrop[ 
Rasterize[Graphics[{
EdgeForm[Thin],
Table[
If[Head[(Subscript[σ, i,j])]===Cycles || i==j,
{Red, Rectangle[{i-1,n-j},{i,n-j+1}]},
{Yellow, Rectangle[{i-1,n-j},{i,n-j+1}]}
], {i,n}, {j,i,n}
]
}, AspectRatio -> 1/GoldenRatio, ImageSize -> 720], RasterSize -> 720]
]