The variety of characters in a password directly corresponds to the password's entropy. The more entropy, the harder the password is to crack. We measure entropy in powers of two.
A ten-character all-lowercase password has an entropy of log₂(26¹⁰) = 47. A seven-character password composed of random printable characters is log₂(94⁷) = 45. As you've correctly surmised, optimal password length is dictated by the password requirements. However, one must also note that password requirements both enforce and limit entropy.
A policy that implements a minimum length of 12 characters will have a majority of users that select codes of mixed lowercase letters and numbers. That would be an entropy of roughly log₂(26¹¹×10¹) = 55.0. You want at least 90, so that's insufficient.
A policy that requires 12 characters including an uppercase letter and a special character will at least force that floor to triple its iterations, increasing the entropy by 1.7: log₂(26¹⁰×26¹×32) = 56.7 (probably more like 62.3, but I'm ignoring location for simplicity; it's always best to low-ball your calculation rather than risk over-estimating it).
If you're using a random generator, the strength is much more robust but the requirements get in the way: log₂(94¹²) = 78.6 vs log₂(94¹⁰×26¹×32¹) = 75.2. Of course, if you're using a generator, you're hopefully also using a password manager and therefore length doesn't matter. Make the code longer and the requirements get diluted.
Did you notice? 12 character passwords aren't strong enough! Lock your password manager with a passphrase of randomly selected words, one of which is a password (more detail on this scheme). Memorize just that. Everything else should be a generated code of 16+ characters (around log₂(94¹³×26¹×10¹×32¹) = 98).
See also related question Why use random characters in passwords?