The [major system][1] is a [mnemonic][2] device for converting numbers into words so they can be memorized more easily.

It is based on how words sound phonetically, but to keep things simple for the challenge we'll only be concerned with how words are spelled. This means there will be some incorrect conversions, but that's alright.

> To convert a number into a word using our simplified major system:
> 
> - Replace each `0` with `s` or `z`. (Some could be `s` and some could be `z`. Same goes below.)
> - Replace each `1` with `t` or `d` or `th`.
> - Replace each `2` with `n`.
> - Replace each `3` with `m`.
> - Replace each `4` with `r`.
> - Replace each `5` with `l`.
> - Replace each `6` with `j` or `sh` or `ch`.
> - Replace each `7` with `k` or `c` or `g` or `q`.
> - Replace each `8` with `f` or `v`.
> - Replace each `9` with `p` or `b`.
> - Add the letters `aehiouwxy` anywhere in any amounts to make a real English word, *if possible*.  
**The only exception is that `h` may not be inserted after an `s` or `c`.**
>
> 
> The number may actually be any string of the digits 0-9 (no decimals or commas or signs).   
> The word can only contain the lowercase letters a-z.

##Examples

The number `32` must be converted as `?m?n?`, where `?` represents any finite string made from the letters `aehiouwxy` (a string from the [free monoid][3] if you prefer). There are many ways this could be made into a real English word: `mane`, `moon`, `yeoman`, etc.

The number `05` could be converted as `?s?l?` or `?z?l?`. Some possibilities are `easily`, `hassle`, and `whistle`. The word `shawl` is not allowed because `h` may not be placed after `s`; it would be incorrectly read as `65`.

#Challenge

Write a program or function that takes in a string of the digits 0-9 and finds all the words that it could be converted into using the simplified major system mnemonic.

Your program has access to a word list text file that defines what all the "real" English words are. There is one lowercase a-z word on each line of this file, and you may optionally assume it has a trailing newline. [Here is a list of real words you can use for testing.][4] You can assume this word list file is called `f` (or something longer) and lies in any convenient directory.

For a 35 byte penalty (add 35 to your score) you may assume the word list is already loaded into a variable as a list of strings. This is mainly for languages that can't read files, but any submission may take advantage of it. 

Your program must output **all** the words in the word list that the input number can be converted to. They should be printed to stdout (or similar), one per line (with an optional trailing newline), or they can be returned as a list of strings if you chose to write a function. The word list is not necessarily alphabetized and the output doesn't need to be either.

If there are no possible words then the output (or the list) will be empty. The output is also empty if the empty string is input.

Take input via stdin, command line, or as a string argument to a function. The word list, or its file name, should not be part of the input, only the digit string.

You are only matching single words in the word list, not sequences of words. The word `noon` would probably be one of the results for `22`, but the word sequence `no one` wouldn't.

##Test Cases

Suppose this is the word list:

    stnmrljkfp
    zthnmrlshqfb
    asatanamaralajakafapa
    aizxydwwwnhimouooraleshhhcavabe
    zdnmrlshcvb
    zdnmrlshchvb
    sthnmrlchgvb
    shthnmrlchgvb
    bob
    pop
    bop
    bopy
    boppy
    

The input `0123456789` should give all the long words except `zdnmrlshchvb` and `shthnmrlchgvb`:

    stnmrljkfp
    zthnmrlshqfb
    asatanamaralajakafapa
    aizxydwwwnhimouooraleshhhcavabe
    zdnmrlshcvb
    sthnmrlchgvb

The input `99` should give:

    bob
    pop
    bop
    bopy

(The output words may be in any order.)

##Scoring

The shortest submission [in bytes][5] wins. Tiebreaker goes to the submission posted first.

*Nifty related site: [numzi.com][6].*

  [1]: http://en.wikipedia.org/wiki/Mnemonic_major_system
  [2]: http://en.wikipedia.org/wiki/Mnemonic
  [3]: http://en.wikipedia.org/wiki/Free_monoid
  [4]: http://www-01.sil.org/linguistics/wordlists/english/wordlist/wordsEn.txt
  [5]: https://mothereff.in/byte-counter
  [6]: http://numzi.com/numzi/