Yes, you’ve got the right approach. Just to illustrate. Imagine we are swapping the `a`

from the end to the beginning. This takes 3 steps from beginning to end:

```
b c d a
b c a d
b a c d
a b c d
```

The trick here is just to extend what you’ve already done, and make the group recursive with a `match`

rule:

```
c convenience stores
store(bcd) outs(b) outs(c) outs(d)
store(bc) outs(b) outs(c)
store(cd) outs(c) outs(d)
group(reorder)
c pairwise swaps
any(d) any(c) > context(2) context(1)
any(cd) any(b) > context(2) context(1)
any(bcd) any(a) > context(2) context(1)
c swaps 2/3
any(bc) any(a) any(d) > context(2) context(1) context(3)
c swap 3/4
any(b) any(a) any(c) any(d) > context(2) context(1) context(3) context(4)
match > use(reorder)
```

So the longest possible series has only one rule, with an additional rule needed for each subsequent level. I realised it’ll be more than one rule per character class but still hopefully not insurmountable!