in reply to Questions: how to exclude substring having Evil meanings
Effectively, you have a base 36 number. You could switch the number to base 10 (11 digits if you use the full range) or hex (10 digits if you use the full range, 9 covers most) when showing it to the user, although that might require you to do some changes to allow both formats in some inputs. Bonus: it avoids confusing 1/l and 0/O.