Touch-typable Passwords

* Rules

** Security

   1. Length: 9 characters
   2. Characters randomly selected
   3. At least one character from each category:
      - Alphabetic lower (1,2,4,5)
      - Alphabetic upper (10,11,13,14)
      - Numeric (0,3)
      - Symbol (6,7,8,9,12,15,16,17)

** Typability

   1. Alternate right-hand and left-hand keys
   2. First key may be either right or left
   3. No more than one numeric 
   4. No more than one symbol
   5. Alphabetic upper case will not occur before or after pinky
      reach (Zones I, IV, VII)

** Summary

|-------------------------------------+-------------------------------------|
| Current Zone                        | Next Zone[*]                        |
|-------------------------------------+-------------------------------------|
| (Before first character)            | 50%: (0) 1 2 (9) 10 11 (LH any)     |
|                                     | 50%: (3) 4 5 (6) (7) (8) (12) 13 14 |
|                                     | (15) (16) (17) (RH any)             |
|-------------------------------------+-------------------------------------|
| (0) 1 (LH unshift r1-2)             | (3) 4 5 (6) (7) (8) (RH unshift)    |
|-------------------------------------+-------------------------------------|
| 2 (LH unshift r3-4)                 | (3) 4 5 (6) (7) (8) (12) 13 14      |
|                                     | (15) (16) (17) (RH any)             |
|-------------------------------------+-------------------------------------|
| (9) 10 (LH shift r1-2)              | 5 8  (RH unshift r3-4)              |
|-------------------------------------+-------------------------------------|
| 11 (LH shift r3-4)                  | 5 8 14 (17) (RH r3-4)               |
|-------------------------------------+-------------------------------------|
| (3) 4 (6) (7) (RH unshift r1-2)     | (0) 1 2 (LH unshift)                |
|-------------------------------------+-------------------------------------|
| 5 (8) (RH unshift r3-4)             | (0) 1 2 (9) 10 11  (LH any)         |
|-------------------------------------+-------------------------------------|
| (12), 13, (15), (16) (RH shift r1-2 | 2 (LH unshift r3-4)                 |
|-------------------------------------+-------------------------------------|
| 14 (17) (RH shift r3-4)             | 2 11 (LH r3-4)                      |
|-------------------------------------+-------------------------------------|

  (N) Zone N characters (numerics, symbols) will be pre-positioned
      and therefore not candidates for sequential next character.
      ==> difficult to generate typable sequences with
      pre-positioning: instead generate typeable sequences and
      discard seq. that lack security features

  [*] Select randomly from combined keys in all candidate zones. The
      alternative of randomly selecting zone then selecting character
      from selected zone would result in high frequency of occurence
      for characters in small zones.