Finding Optimal Solutions to Rubik's Cube Using Pattern Databases