One option:
https://github.com/ryepdx/pyethrecover does something very similar to what you're asking for, in the context of remembering an ethereum wallet password. In your case, the password-spec file would probably contain something like:
``` [ ('S','s','5'), ('I','i'), ('M','m'), ('P','p'), ...etc ] ``` See the comments https://github.com/ryepdx/pyethrecover/blob/master/password_... for details.
The overall code is not complex: it should be straightforward to strip out the word generation from the wallet testing and re-purpose it for your needs.