It's probably not difficult to generate the possible permutations but there may be a very large number. For example if there are 20 characters in the phrase upper/lower case alone gives about 1 million possibilities.
Also I'm not sure how you could try them automatically unless you have sshd running on the laptop.
I didn't understand the meaning of "s=5 o=0 e=3".
I guess you don't want to reorder the letters.
Are the uppercase possible only at the beginning of each word, or it can be in LaTeXcase?
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.