FMC Domino Reduction

A domino reduction guide for FMC

Reference: DR guide by Alexandros Fokianos & Tommaso Raposio

Prereqs

You should know what does FMC mean, and familiar with the standard notations for Rubik's cube. Before learning domino reduction, you are encouraged to learn more traditional FMC approach first. Reference: The Bible for FMC

Overview

The vanilla domino reduction method for FMC is a series of "group reduction", meaning at each stage, you will apply some moves so the cube can be solved with only a subset of moves. You should be color neutral for the FMC in general, and no exception for domino reduction.

Below are the stages in a vanilla FMC solution, we will find a holistic solution which minimizes the total move count:
- Step 1 (Edge Orientation): Apply moves so all edges are oriented, so the cube can be solved with only .
- Step 2 (Domino Reduction): Apply moves so all corners are oriented, and all E-edges are on the E-layer, so the cube can be solved with only . If step 1 already oriented all corners or step 1 already put all E-edges on E-layer, this step is called partial domino reduction.
- Step 3 (Finish): Solve the cube.

In this tutorial, we will focus on the vanilla method. You may refer to the document at the beginning of this page for more advanced tricks.

Edge Orientation

The standard Edge Orientation is very intuitive. For FMC, you should try multiple alternative EO solves, e.g. R' F might lead to a better case for next 2 stages, compared to R' F'.
If feasible, try to find a sequence that solves a "good" EO, with most corners oriented and some E-edges already in the E-layer.
Also, make sure to check all cube orientations: you may aim F/B EO <u, d, l, r, f2, b2> or L/R EO or U/D EO <u2, d2, l, r, f, b>. For each EO, you may make a z rotation for the DR.
For example, F/B EO can be reduced to <u, d, l2, r2, f2, b2> without a z rotation, but you may also make a z rotation, and reduce to <u2, d2, l, r, f2, b2>.

For example, use the scramble R' U' F D2 R2 B2 D2 R2 B' F' L2 U' F2 U2 L D U' F' L' D' R2 U R' U' F U' F.

Notice this cube is already in F/B EO. Currently, there are only two corners oriented (UBR and DLB), and two E-edges in E-layer (FR and BR).
However, you may make a z rotation, the cube is still in EO. But if you target <u2, d2, l, r, f2, b2> domino reduction, there are four corners oriented and three E-edges in E-layer. This is more likely to lead to a shorter solution in step 2.

Therefore, the strategy in step 1 is to try all 6 different EO.

Domino Reduction

The idea for Domino Reduction is to get familiar with some "triggers", and then setup your case into the trigger (no reverse needed for this context).
One example trigger is R U R' which solves the case below.

Another trigger is R U2 R' which solves the case below.

R is also a common trigger.

You may use your second cube to setup to a trigger case, and try to setup the first cube into that trigger case.

NISS could be applied here to increase the chance of finding a good solution. Learn NISS from The Bible for FMC.

Partial Domino Reduction

Technically PDR refers to any of the three scenarios (although the overview only mentioned first 2 for simplicity).
- CO and EO are done, E-layer does not only have E-edges.
- E-layer and EO are done, CO is not done.
- CO and E-layer are done, EO is not done.

For CO and EO done, may insert an edge commutator (e.g. U' M2 U or R' E2 R) when there are 1 or 2 bad edges. If there are 3 or 4 bad edges, it's not a very good case, consider switching previous moves.
For E-layer and EO done, you may use sune or classic 8movers corner commutators.
For CO and E-layer done, you may use Roux-style algorithms (e.g. M' U M).

Finish

  • Method 1: Have a skeleton close to solved state, then use insertions. Edge insertions very likely can cancel many moves.
  • Method 2: Solve corners while try to influence more edges. Then use edge insertions.
  • Method 3: Build blocks intuitively.
  • Method 4: This can be used rarely, but reduce into Half Turn Reduction (HTR) <u2, d2, f2, b2, l2, r2>, and then it's very easy to solve.

HTR Recognition

HTR (Half Turn Reduction) means reaching a state that can be solved using only half turns.

Once DR is reached, the cube is at most 5 quarter turns (QTs) away from HTR. This makes HTR recognition a small, structured classification problem.

What does “QT distance” mean?

Once we are in DR, we are allowed to use the same DR-preserving moves while searching for HTR. In particular, half turns are free for the purpose of counting QT distance.

A QT (quarter turn) is a 90° turn such as R, R', U, or U'. A half turn such as R2 does not count.

More importantly, when stepping from DR toward HTR, the QTs are applied on a single axis at a time, with half turns used to move between the axes. So a typical DR → HTR solution has the structure:

HT + QT + HT + QT + HT + QT + ...

For example, a route such as

R2 U' F2 R U2 F2 L' D2

has only 3 QTs: U', R, and L'. The half turns R2, F2, U2, and D2 do not contribute to the QT count.

This is why QT distance is such a useful indicator in DR → HTR search: the number of QTs gives a good estimate of how much non-HT work is still needed, while the half turns take care of the necessary setup between them.

For example:

DR → HTR route QT distance
R2 U' F2 1 QT
R2 U' F2 R D2 2 QTs
R2 U' F2 R D2 L' 3 QTs
R2 U' F2 R D2 L' B 4 QTs

Therefore, 4a3 means that the DR position is a 4a position and that the shortest DR-preserving route to HTR requires 3 QTs, with half turns used as needed between those QTs.

Practical takeaway: When you are already in DR, you can often think of HTR search as “How many QTs away am I?” rather than counting every move. The QT count is usually a much better indication of the remaining work.

1. What are we recognizing?

Every DR position belongs to one of three corner categories:

  • 0c: 0 or 8 misoriented corners
  • 2c: 2 or 6 misoriented corners
  • 4c: 4 misoriented corners

A corner is misoriented if it cannot be placed correctly using only half turns.

The number after the category is the minimum number of quarter turns required to reach HTR. For example, 2c4 means a 2c position that is 4 QTs from HTR.

2. The complete classification

Corner type Possible cases QT distance
0c 0c0, 0c3, 0c4 0, 3, 4
2c 2c3, 2c4, 2c5 3, 4, 5
4a 4a1, 4a2, 4a3, 4a4 1, 2, 3, 4
4b 4b2, 4b3, 4b4, 4b5 2, 3, 4, 5

Notice two useful facts:

  • 4a1 exists, but 4b1 does not.
  • 4b can be as far as 5 QTs from HTR.

3. Recognition: 0c

There are only three possibilities:

Case Recognition
0c0 Already HTR.
0c3 / 0c4 Use parity / blind tracing to distinguish them.

If the position is not already HTR, there is no need to guess between 0c3 and 0c4. A quick parity trace tells you which one it is.


4. Recognition: 2c

There are three possibilities: 2c3, 2c4, 2c5.

Case How to recognize
2c4 Identify it using blind tracing.
2c3 / 2c5 Mentally swap the two misoriented corners.

The mental-swap test is particularly useful:

  • If swapping the two misoriented corners produces fake HTR, the case is 2c3.
  • If it produces real HTR, the case is 2c5.

5. Recognition: 4c

4c has the most cases, but it becomes much easier if you recognize it in stages.

Do not try to memorize eight independent cases. Instead, use:

  1. Shape
  2. Parity
  3. Inverse shape
Step 1 — Determine the shape

First determine whether the position is 4a or 4b.

  • 4a: the four misoriented corners can be put on one side using only half turns.
  • 4b: they cannot.
Step 2 — Use parity

Parity narrows the possible QT distances. The recognition tree is:

Shape Parity Remaining possibilities
4a even 4a1 / 4a3
4a odd 4a2 / 4a4
4b even 4b2 / 4b4
4b odd 4b3 / 4b5

This is already enough to reduce eight cases to just two candidates.

Important: parity does not distinguish 4b3 from 4b5. Both have odd parity.
Step 3 — Check the inverse shape

The remaining ambiguity can be resolved by looking at the shape of the inverse position. The important inverse relationships are:

Current case Inverse case
4a3 4b3
4b3 4a3
4a4 4b4
4b4 4a4

This gives a very practical recognition rule:

  1. Recognize 4a or 4b.
  2. Use parity to reduce it to two possibilities.
  3. Check the inverse shape to identify the exact case.

For example, suppose you recognize a 4a position with the parity corresponding to 4a2 / 4a4. If the inverse has the 4b shape, the case is 4a4. If the inverse has the 4a shape, it is 4a2.

NISS makes this especially convenient: switch to the inverse scramble, recognize the shape, then switch back.

Recognition mindset: You are not memorizing eight cases. You are answering three simple questions: What shape? What parity? What does the inverse look like?

6. The QT-counting hack

There is also a simpler way to approach HTR recognition when the position is visually obvious. Instead of immediately assigning a case name, ask:

“How many quarter turns do I need to reach HTR?”

Because every DR position is at most 5 QTs from HTR, this is a very small search. If you can quickly see a short sequence that reaches HTR, simply count the QTs. You do not necessarily need to identify the formal case first.

For example, recognizing that a position is 4 QTs away may be enough to guide your search, even before you care whether you would formally call it 4a4 or 4b4.

As you become faster, the formal classification and the QT count naturally become the same recognition process.


HTR Stepping: Reducing the QT Count

Once you recognize the HTR subset, the next question is:

“What should I do to get to a subset with fewer QTs?”

The important idea is that you usually do not need to search for HTR directly. Instead, move through the HTR subsets one step at a time, reducing the QT distance until you reach 0c0.

The basic transition map

Current subset QT Target subset New QT
0c4 4 4a3 3
0c3 3 4a2 2
4a4 4 4a3 3
4a3 3 4b2 2
4a2 2 4a1 1
4a1 1 0c0 0
4b5 5 2c4 4
4b4 4 4a3 3
4b3 3 4a2 2
4b2 2 4a1 1
2c5 5 2c4 4
2c3 3 4b2 2
2c4 4 2c3 3

The table is not meant to be memorized as a list of algorithms. The useful part is understanding how to arrange the bad corners so that a QT moves you into the desired subset.


1. 0c → 4a

For a 0c position, use a U or U' move to change the corner structure into 4a. This always gives you a useful next step.

The important distinction is which 4a subset you create:

  • 0c3 → 4a2
  • 0c4 → 4a3

The QT count therefore drops by one.

0c3 → 4a2 → 4a1 → 0c0
0c4 → 4a3 → 4b2 → 4a1 → 0c0

For 0c3, be careful: not every way of making a 4a state gives the desired 4a2. You want the 4a state that is actually 2 QTs from HTR, rather than accidentally creating 4a4.


2. 4a → 0c

To move from 4a toward HTR, try to put all four bad corners on the U or D face.

This produces a 0c state. For the useful transition:

4a1 → 0c0

This is the final step: once the four bad corners can be arranged this way with only one QT, the corner state becomes HTR.


3. 4a → 4a

Sometimes the best next step keeps the position in 4a while reducing the QT count. The trick is to arrange the four bad corners on the two diagonals:

  • FL + BR, or
  • FR + BL.

Then a U or U' changes which U-layer corners are bad while keeping the position in the 4a family.

This gives the useful transition:

4a2 → 4a1

and eventually:

4a1 → 0c0.


4. 4a → 4b

This is the important transition for 4a3.

Arrange the four bad corners so that there are:

  • 2 bad corners on U
  • 2 bad corners on D

Then a suitable U or U' step changes the state from 4a to 4b. For the correct setup:

4a3 → 4b2

This reduces the QT distance from 3 to 2. From there:

4b2 → 4a1 → 0c0.

Important: Not every 2-2 setup from 4a3 is good. You want the one that produces 4b2, not 4b4.

5. 4b → 4a

The reverse transition uses the same basic idea: put 2 bad corners on U and 2 on D.

For the useful 4b subsets:

  • 4b2 → 4a1
  • 4b3 → 4a2
  • 4b4 → 4a3

Each transition reduces the QT count by one or more.

The particularly important one is:

4b2 → 4a1 → 0c0

This is why 4b2 is such a useful stepping point.


6. 4b → 2c

For a 4b position, another useful transition is to split the bad corners 1 on one of U/D and 3 on the other.

This produces a 2c state. The main transition is:

4b5 → 2c4

From there, the goal is to turn 2c4 into 2c3 rather than 2c5.

So the useful path is:

4b5 → 2c4 → 2c3 → 4b2 → 4a1 → 0c0.


7. 2c → 4b

For a 2c position, you can move toward 4b by arranging the two bad corners so that there is one bad corner on U and one on D.

The useful transition is:

2c3 → 4b2

This is a very efficient transition because it drops the QT distance from 3 to 2.

Then:

4b2 → 4a1 → 0c0.


8. 2c → 2c

This is the special case. For 2c4, the goal is to stay in 2c but turn it into 2c3.

First put the two bad corners on the same U or D face, then apply the appropriate U or U'.

You must choose the direction that produces:

2c4 → 2c3

rather than 2c5.

The distinction can be checked using the same recognition method described earlier: after the step, re-recognize the 2c state.

Do not blindly step 2c4. A bad choice can turn 2c4 into 2c5, increasing the QT distance. The whole point of recognition is to choose the direction that goes downhill.

9. The whole downhill map

Once you understand the transitions, the entire HTR process becomes much easier to visualize:

0c4 → 4a3 → 4b2 → 4a1 → 0c0

0c3 → 4a2 → 4a1 → 0c0

4a4 → 4a3 → 4b2 → 4a1 → 0c0

4b4 → 4a3 → 4b2 → 4a1 → 0c0

4b3 → 4a2 → 4a1 → 0c0

4b5 → 2c4 → 2c3 → 4b2 → 4a1 → 0c0

2c5 → 2c4 → 2c3 → 4b2 → 4a1 → 0c0

These are the downhill routes, not necessarily the exact move sequences. At each stage, use half turns to set up the bad-corner arrangement, then use the appropriate quarter turn to make the transition.

10. What should I actually remember?

You do not need to memorize every transition as a separate algorithm. Remember the structural rules:

Transition How to set it up
0c → 4a Use U/U' to enter a useful 4a state.
4a → 0c Put all 4 bad corners on U or D.
4a → 4a Arrange bad corners on opposite diagonals.
4a → 4b Split bad corners 2 + 2 between U and D.
4b → 4a Split bad corners 2 + 2 between U and D.
4b → 2c Split bad corners 1 + 3 between U and D.
2c → 4b Put 1 bad corner on U and 1 on D.
2c → 2c Put both bad corners on the same U/D face.

The most important mindset is: recognize the current subset, identify its downhill neighbor, use half turns to set up that transition, then make the QT.

After the QT, recognize again. You should now be in a subset with a smaller QT number. Repeat until you reach 0c0.

HTR Downhill Paths

Once you recognize your current subset, you can use the diagram below to decide where to step next. Every arrow points toward a state with a smaller QT distance.

Remember that the arrow represents a QT step. Half turns are used to set up the position between QTs, but they do not increase the QT count.

flowchart LR ``` A["2c5
5 QT"] --> B["2c4
4 QT"] B --> C["2c3
3 QT"] C --> D["4b2
2 QT"] D --> E["4a1
1 QT"] E --> F["0c0
HTR"] G["4b5
5 QT"] --> B H["0c4
4 QT"] --> I["4a3
3 QT"] I --> D J["4a4
4 QT"] --> I K["4b4
4 QT"] --> I L["0c3
3 QT"] --> M["4a2
2 QT"] M --> E N["4b3
3 QT"] --> M ```

The most important paths to remember are:

  • 2c5 → 2c4 → 2c3 → 4b2 → 4a1 → HTR
  • 4b5 → 2c4 → 2c3 → 4b2 → 4a1 → HTR
  • 0c4 → 4a3 → 4b2 → 4a1 → HTR
  • 4a4 → 4a3 → 4b2 → 4a1 → HTR
  • 4b4 → 4a3 → 4b2 → 4a1 → HTR
  • 0c3 → 4a2 → 4a1 → HTR
  • 4b3 → 4a2 → 4a1 → HTR
How to use the diagram:

Recognize your current case → find it in the diagram → follow the arrow → use half turns to set up the indicated QT → make the QT → recognize again.
Why the QT count is useful

The diagram also explains why QT distance is such a useful search indicator. A DR → HTR solution can be thought of as:

HT + QT + HT + QT + HT + QT + ...

The half turns handle the setup between the important quarter turns. Therefore, reducing the QT count generally means reducing the number of non-half-turn steps that remain before HTR.

For example, if you recognize 4b5, you do not need to search randomly for HTR. The diagram tells you to first target 2c4. After that, target 2c3, then 4b2, then 4a1, and finally HTR.

Don't memorize the arrows as algorithms. The arrows tell you which state to target. The half turns are your setup; the QT is the actual step downhill.

How to Solve HTR

To solve 0c0,