yeah, I needed a way to classify the levels by the difficulty. I should have done a double sort, one for the number of goals (boxes) and then the number of minimum moves necessary to finish the level.
This is a pretty standard way of creating solvers for puzzles that have discrete states. When you are searching for a shortest solution you can also hash states to track losing paths and abandon them early.