A bech32 address ending with `p` can be modified be inserting or removing `q` characters immediately before the final `p` character to make a new valid bech32 address. Why does this work?

Are there any other similar mutation weaknesses in bech32?

References:

* [issue raised against bech32 repo](https://github.com/sipa/bech32/issues/51)
* [mailing list post](https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-November/017443.html)