You see the ways to make like a Johnson Counter sequence .
Synchronous counter decoder, rotating serial shift register.
Unknown Setup/hold times can produce unpredictable results.
But, if you wanted the edges to be non-overlapping as well as each state, then there must be a dead-band between output phases, such as used in full bridge drivers to prevent shoot-thru.
If that were the case, a monopulse or one-shot on the active clock edge can be used to AND or disable the outputs.