sliding block puzzle solver