Counting a Structured Password Generator with Combinatorics on March 19, 2026 books passwords python +