Algorithm solving arbitrary Rubik's Cube