gggggggggrrrrrrrrrwwwwwwwwwbbbbbbbbboooooooooyyyyyyyyy scrambled
gggggggggrrrrrrrrrwwwwwwwwwbbbbbbbbboooooooooyyyyyyyyy centers
gggggggggrrrrrrrrrwwwwwwwwwbbbbbbbbboooooooooyyyyyyyyy goal
-g--------r--------w-w-w-w--b--------o---------------- goal Cross
-g--------r--------w-w-w-w--b--------o---------------- scrambled Cross
ggg------rrr------wwww-wwwwbbb------ooo--------------- goal First Layer
ggg------rrr------wwww-wwwwbbb------ooo--------------- scrambled First Layer
gggg-g---rrrr-r---wwww-wwwwbbbb-b---oooo-o------------ goal F2L
gggg-g---rrrr-r---wwww-wwwwbbbb-b---oooo-o------------ scrambled F2L
gggg-g---rrrr-r---wwww-wwwwbbbb-b---oooo-o---yyyyyyyyy goal OLL
gggg-g---rrrr-r---wwww-wwwwbbbb-b---oooo-o---yyyyyyyyy scrambled OLL
gggg-gg-grrrr-rr-rwwww-wwwwbbbb-bb-boooo-oo-oyyyyyyyyy goal PLC
gggg-gg-grrrr-rr-rwwww-wwwwbbbb-bb-boooo-oo-oyyyyyyyyy scrambled PLC

'=prime=counter clockwise

This is a brute force "meet in the middle" solver, working from both the unsolved-cube-state and the solved-cube-state, but with steps. centers are fixed. BETA
Any Cube can theoretically be solved in 20 moves. 90% can be solved in 18 moves, but this would take a lot of time and memory.
This is an experiment to break this up in steps to get a shortish solution, a "progress" based solver, working from layer to layer.