For every guest , draw an arrow from to . Also draw an arrow from the initially empty sofa to the desired empty sofa. Each sofa now has exactly one incoming and one outgoing arrow, so the sofas split into cycles.
The cycle containing the empty sofa can be solved by repeatedly moving the guest whose destination is currently empty. If it contains sofas, this takes moves. Every guest moves directly to their destination, so all these moves are legal. Along the way, every sofa in this cycle becomes empty.
A different cycle of length needs at least moves. Every guest must move, and the first guest to leave the cycle cannot move directly to their destination: that sofa is still occupied. This guest must move at least twice.
A one-sofa cycle contains a guest who is already correctly seated. Leaving this guest alone costs nothing. Using their sofa temporarily costs at least two moves, since they must leave and return.