Johnson Trotter Algorithm