I had a prof in college describe solving a rubik's cube as group conjugation (e.g. f * g * f^-1).<p>For example, you find a way to swap two pieces on the top layer and mangle the bottom (f), turn the top (g), and then do the opposite (f^-1), swapping a different pair and un-mangling the bottom. Between complementary swaps, edge flips, and corner rotations, you can build an entire solution with this technique. (My current version of this does the edges first, ignoring any damage to corners and then does corners.)<p>Somewhat related - many years ago there was a tutorial of the Gap computer algebra system that analyzed the rubik's cube group. I can't find the original, but there is a translation to Julia here: <a href="https://oscar-system.github.io/GAP.jl/stable/examples/" rel="nofollow">https://oscar-system.github.io/GAP.jl/stable/examples/</a>