Working on a small program recently I found a quirk in next_permutation. The prorgam read a sequence of characters from the command line and then tried to find words by testing each permuation. For a sequence of 3 characters there are 6 permutations.

Most of the online examples look something like this:

Which produces:

```
abc
acb
bac
bca
cab
cba
```

No surprises but when I cam to process input like ‘bac’ the number of permutations found were far too small.

```
bac
bca
cab
qcba
```

The problem is that the next_permutation modifies or mutates the vector so it needs to have a state to know when it has completed. That state is the vector itself. next_permutation returns false when all the elements are in increasing order.

To work with arbitrary input the sequence first needs to be sorted.

which now produces the right result