How many positions exist?
A cube has 8 corners, each with 3 orientations, and 12 edges, each with 2 orientations. Not all combinations are reachable, so we divide out invalid states.
The ÷12 accounts for three constraints: you can never have exactly one pair of swapped edges, exactly one pair of swapped corners, or a single flipped edge in isolation. These are the parity rules.
The Cube Group
In abstract algebra, every valid sequence of moves forms a mathematical group called G — the Rubik's Cube group. Its order (size) is exactly the 43 quintillion number above.
Each face turn is a permutation of 20 moving pieces. Composing two moves means applying one permutation after another — this is group multiplication. The identity element is the solved state (do nothing).
Parity
Parity is why you can never swap just two pieces. Every legal move is an even permutation overall — so the set of reachable positions is a subgroup of the symmetric group. This halves the number of valid corner states and halves the edge states, and a third constraint halves the orientation states, giving the ÷12 divisor.
Parity explains the classic frustration: getting 99% solved only to find two edges swapped — that configuration is simply unreachable from a fully assembled cube without disassembling it.
God's Number — the diameter of the group
In 2010, a team using 35 CPU-years of computation proved that every one of the 43 quintillion positions can be solved in at most 20 moves (in the Half-Turn Metric). This upper bound is called God's Number — the maximum distance from the solved state across the entire group graph.
There are exactly 490 million positions that require exactly 20 moves. The average position requires about 18 moves to solve optimally.
Commutators & Conjugates
Most human speedsolving algorithms are built from two algebraic structures:
Commutator [A, B] = A B A⁻¹ B⁻¹ — applies A, then B, then undoes A, then undoes B. The result targets a small set of pieces while leaving the rest untouched.
Conjugate A B A⁻¹ — sets up a piece into position (A), does an operation (B), then restores (A⁻¹). This is the backbone of intuitive F2L and corner-insertion techniques.