Begin with the cities that provide a distinct reason to stop, then test the order against transport time and cost. An open-jaw arrival and departure can remove backtracking. Treat every transfer as part of the day, including station changes, airport buffers, and recovery time.
Add a city only when its experience outweighs the connection it requires. Leave a buffer before long-haul departures and keep at least a few half-days flexible.