Optimal Solutions For The Rubiks Cube