Source: https://cube.stanford.edu/class/files/rubiks_cube_solution.pdf