Based on https://math.stackexchange.com/a/739906/37806.
Assuming chars and one of each category: upper, lower, digit, special.