More work on challenge 8b
[cipher-tools.git] / 2014-challenge8.ipynb
index 5b5d5dc19aa6a527e12022bc628c8d346dec109e..e30823ed13b037f1949af1a3af57a2a7ee88d102 100644 (file)
@@ -1,7 +1,7 @@
 {
  "metadata": {
   "name": "",
-  "signature": "sha256:e375a3faf5213c9f51d99f7c22948b1a55e592a6d8b6156a30b0fb490ea337a1"
+  "signature": "sha256:8cfa7fab1d8d3830f8cdd550122b0b7f10258d8adb3ff205bd1feeca64418741"
  },
  "nbformat": 3,
  "nbformat_minor": 0,
@@ -26,7 +26,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 9
+     "prompt_number": 1
     },
     {
      "cell_type": "code",
@@ -43,7 +43,7 @@
        "output_type": "pyout",
        "prompt_number": 2,
        "text": [
-        "<matplotlib.axes.AxesSubplot at 0x7fe302243fd0>"
+        "<matplotlib.axes.AxesSubplot at 0x7f25d36fa358>"
        ]
       },
       {
@@ -51,7 +51,7 @@
        "output_type": "display_data",
        "png": "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\n",
        "text": [
-        "<matplotlib.figure.Figure at 0x7fe32d0cc0f0>"
+        "<matplotlib.figure.Figure at 0x7f26006854e0>"
        ]
       }
      ],
@@ -72,7 +72,7 @@
        "output_type": "pyout",
        "prompt_number": 3,
        "text": [
-        "<matplotlib.axes.AxesSubplot at 0x7fe301119be0>"
+        "<matplotlib.axes.AxesSubplot at 0x7f25d37269b0>"
        ]
       },
       {
@@ -80,7 +80,7 @@
        "output_type": "display_data",
        "png": "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\n",
        "text": [
-        "<matplotlib.figure.Figure at 0x7fe301154198>"
+        "<matplotlib.figure.Figure at 0x7f25d369f358>"
        ]
       }
      ],
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 12,
+       "prompt_number": 7,
        "text": [
         "875.0"
        ]
       }
      ],
-     "prompt_number": 12
+     "prompt_number": 7
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "[c for c in chunks(c8b, 8)]"
+      "[c for c in chunks(c8b, 5)]"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 21,
+       "prompt_number": 8,
        "text": [
-        "['00000001',\n",
-        " '01000100',\n",
-        " '00000010',\n",
-        " '01010001',\n",
-        " '11010011',\n",
-        " '10011000',\n",
-        " '00000101',\n",
-        " '00110011',\n",
-        " '11000101',\n",
-        " '00001110',\n",
-        " '01011001',\n",
-        " '00100110',\n",
-        " '00101001',\n",
-        " '00010010',\n",
-        " '00110011',\n",
-        " '00111100',\n",
-        " '10001111',\n",
-        " '00111000',\n",
-        " '10000000',\n",
-        " '11101010',\n",
-        " '11000011',\n",
-        " '10100010',\n",
-        " '11110010',\n",
-        " '11000100',\n",
-        " '11000100',\n",
-        " '01110000',\n",
-        " '00000110',\n",
-        " '11110111',\n",
-        " '10100101',\n",
-        " '10100110',\n",
-        " '01011100',\n",
-        " '11001001',\n",
-        " '00010110',\n",
-        " '10010000',\n",
-        " '10100100',\n",
-        " '01110001',\n",
-        " '01010000',\n",
-        " '11101000',\n",
-        " '11001110',\n",
-        " '01000011',\n",
-        " '00011011',\n",
-        " '10001000',\n",
-        " '01001010',\n",
-        " '00110010',\n",
-        " '01000010',\n",
-        " '10001101',\n",
-        " '00001001',\n",
-        " '00010110',\n",
-        " '10010100',\n",
-        " '10010011',\n",
-        " '01011000',\n",
-        " '00000000',\n",
-        " '01011001',\n",
-        " '01001110',\n",
-        " '11001000',\n",
-        " '00100011',\n",
-        " '01100111',\n",
-        " '00011010',\n",
-        " '10111001',\n",
-        " '11001101',\n",
-        " '00100100',\n",
-        " '01001111',\n",
-        " '01000000',\n",
-        " '00011110',\n",
-        " '00100000',\n",
-        " '10101001',\n",
-        " '00100010',\n",
-        " '01000010',\n",
-        " '01001110',\n",
-        " '01010101',\n",
-        " '10010010',\n",
-        " '00001000',\n",
-        " '10110011',\n",
-        " '10101101',\n",
-        " '11010010',\n",
-        " '10011000',\n",
-        " '11011100',\n",
-        " '00000101',\n",
-        " '10111011',\n",
-        " '00000000',\n",
-        " '00100100',\n",
-        " '10011000',\n",
-        " '11010110',\n",
-        " '10001101',\n",
-        " '00000110',\n",
-        " '01101011',\n",
-        " '01100010',\n",
-        " '01110111',\n",
-        " '00011100',\n",
-        " '11110011',\n",
-        " '10010011',\n",
-        " '01000000',\n",
-        " '11100100',\n",
-        " '00101101',\n",
-        " '10100010',\n",
-        " '01101100',\n",
-        " '10100100',\n",
-        " '10000001',\n",
-        " '01000100',\n",
-        " '10000000',\n",
-        " '01101011',\n",
-        " '01001000',\n",
-        " '01000100',\n",
-        " '00100001',\n",
-        " '00000100',\n",
-        " '10001101',\n",
-        " '10100110',\n",
-        " '00000110',\n",
-        " '10010010',\n",
-        " '01010001',\n",
-        " '10101011',\n",
-        " '10001100',\n",
-        " '10000010',\n",
-        " '00100011',\n",
-        " '00010110',\n",
-        " '10010100',\n",
-        " '10000110',\n",
-        " '01100111',\n",
-        " '11010101',\n",
-        " '11001000',\n",
-        " '00000010',\n",
-        " '00100100',\n",
-        " '00000111',\n",
-        " '00000000',\n",
-        " '10001110',\n",
-        " '00000001',\n",
-        " '00000111',\n",
-        " '00010110',\n",
-        " '10100010',\n",
-        " '01110001',\n",
-        " '01101101',\n",
-        " '11001000',\n",
-        " '10000011',\n",
-        " '01000101',\n",
-        " '11110010',\n",
-        " '10010001',\n",
-        " '11000000',\n",
-        " '00110011',\n",
-        " '10001110',\n",
-        " '01101110',\n",
-        " '01000011',\n",
-        " '11000000',\n",
-        " '00001001',\n",
-        " '10010010',\n",
-        " '11100100',\n",
-        " '01101011',\n",
-        " '01001001',\n",
-        " '00100000',\n",
-        " '00011010',\n",
-        " '00101110',\n",
-        " '00001100',\n",
-        " '11010110',\n",
-        " '01001001',\n",
-        " '01000101',\n",
-        " '10110001',\n",
-        " '01110010',\n",
-        " '00100011',\n",
-        " '10000111',\n",
-        " '10000100',\n",
-        " '11000100',\n",
-        " '00011000',\n",
-        " '10010110',\n",
-        " '10110100',\n",
-        " '01011000',\n",
-        " '00001011',\n",
-        " '00000010',\n",
-        " '11001000',\n",
-        " '01000110',\n",
-        " '10100000',\n",
-        " '11010001',\n",
-        " '10001011',\n",
-        " '01101101',\n",
-        " '10001000',\n",
-        " '10101101',\n",
-        " '00001100',\n",
-        " '01011011',\n",
-        " '11100101',\n",
-        " '00110111',\n",
-        " '00101100',\n",
-        " '10000101',\n",
-        " '10011100',\n",
-        " '01000110',\n",
-        " '11001010',\n",
-        " '00000010',\n",
-        " '00101000',\n",
-        " '00100001',\n",
-        " '00001000',\n",
-        " '10000100',\n",
-        " '00000001',\n",
-        " '11001011',\n",
-        " '01101001',\n",
-        " '00101101',\n",
-        " '00100000',\n",
-        " '00111000',\n",
-        " '11110001',\n",
-        " '10011010',\n",
-        " '11100101',\n",
-        " '00110111',\n",
-        " '00000100',\n",
-        " '10010011',\n",
-        " '01101100',\n",
-        " '10010111',\n",
-        " '01010010',\n",
-        " '10100010',\n",
-        " '10100011',\n",
-        " '01110101',\n",
-        " '01100110',\n",
-        " '11110111',\n",
-        " '00000000',\n",
-        " '10000100',\n",
-        " '01000100',\n",
-        " '10000100',\n",
-        " '10000111',\n",
-        " '00011101',\n",
-        " '00001111',\n",
-        " '10010001',\n",
-        " '00101010',\n",
-        " '01000010',\n",
-        " '00001110',\n",
-        " '01100100',\n",
-        " '10110001',\n",
-        " '01000001',\n",
-        " '00010110',\n",
-        " '10011100',\n",
-        " '10000001',\n",
-        " '01011001',\n",
-        " '00000000',\n",
-        " '11101001',\n",
-        " '10111000',\n",
-        " '11110011',\n",
-        " '10011100',\n",
-        " '11001000',\n",
-        " '11110110',\n",
-        " '10001001',\n",
-        " '01000000',\n",
-        " '01110011',\n",
-        " '01001111',\n",
-        " '01100010',\n",
-        " '01001101',\n",
-        " '10010101',\n",
-        " '11000011',\n",
-        " '11100011',\n",
-        " '00010010',\n",
-        " '00111001',\n",
-        " '10101101',\n",
-        " '00000100',\n",
-        " '10001100',\n",
-        " '00110010',\n",
-        " '00001101',\n",
-        " '11000100',\n",
-        " '00100001',\n",
-        " '00011100',\n",
-        " '00000000',\n",
-        " '00110010',\n",
-        " '01100010',\n",
-        " '01000000',\n",
-        " '10100111',\n",
-        " '00110100',\n",
-        " '00010101',\n",
-        " '10100000',\n",
-        " '00011100',\n",
-        " '01001001',\n",
-        " '00101000',\n",
-        " '11001110',\n",
-        " '01000100',\n",
-        " '10001011',\n",
-        " '10100100',\n",
-        " '01001001',\n",
-        " '11000100',\n",
-        " '11100010',\n",
-        " '01000000',\n",
-        " '10100110',\n",
-        " '11111001',\n",
-        " '00000000',\n",
-        " '00000100',\n",
-        " '00111010',\n",
-        " '11000110',\n",
-        " '01111001',\n",
-        " '00010110',\n",
-        " '11110010',\n",
-        " '01110000',\n",
-        " '00011101',\n",
-        " '00110001',\n",
-        " '01001100',\n",
-        " '00100001',\n",
-        " '10010011',\n",
-        " '10001000',\n",
-        " '10001000',\n",
-        " '10110110',\n",
-        " '01000000',\n",
-        " '00011010',\n",
-        " '11110001',\n",
-        " '00111000',\n",
-        " '11000110',\n",
-        " '10001101',\n",
-        " '10001000',\n",
-        " '10001000',\n",
-        " '11111001',\n",
-        " '11001100',\n",
-        " '11110001',\n",
-        " '00100101',\n",
-        " '00001110',\n",
-        " '11010101',\n",
-        " '01001100',\n",
-        " '00000010',\n",
-        " '00100000',\n",
-        " '10001000',\n",
-        " '01000101',\n",
-        " '11000110',\n",
-        " '11001101',\n",
-        " '01000100',\n",
-        " '01001000',\n",
-        " '01000010',\n",
-        " '00000000',\n",
-        " '10010010',\n",
-        " '00100001',\n",
-        " '00001000',\n",
-        " '10000001',\n",
-        " '10100010',\n",
-        " '01001110',\n",
-        " '00110000',\n",
-        " '10001000',\n",
-        " '11100110',\n",
-        " '00110110',\n",
-        " '00110011',\n",
-        " '00100010',\n",
-        " '01001110',\n",
-        " '00000011',\n",
-        " '00000000',\n",
-        " '00110010',\n",
-        " '00100011',\n",
-        " '01010001',\n",
-        " '00110101',\n",
-        " '11011010',\n",
-        " '01110001',\n",
-        " '01101000',\n",
-        " '01011000',\n",
-        " '10000010',\n",
-        " '00101110',\n",
-        " '01000000',\n",
-        " '10001001',\n",
-        " '00100110',\n",
-        " '01001001',\n",
-        " '01000101',\n",
-        " '10100110',\n",
-        " '10010011',\n",
-        " '01001110',\n",
-        " '01000000',\n",
-        " '10100001',\n",
-        " '11010010',\n",
-        " '00011010',\n",
-        " '00001000',\n",
-        " '11010000',\n",
-        " '00010101',\n",
-        " '01100100',\n",
-        " '01000100',\n",
-        " '10000000',\n",
-        " '01110111',\n",
-        " '00001001',\n",
-        " '00000101',\n",
-        " '00100101',\n",
-        " '01011000',\n",
-        " '01010000',\n",
-        " '01001100',\n",
-        " '00001101',\n",
-        " '00000100',\n",
-        " '11100010',\n",
-        " '11010100',\n",
-        " '00000000',\n",
-        " '11001101',\n",
-        " '00111000',\n",
-        " '00100110',\n",
-        " '11010110',\n",
-        " '00100000',\n",
-        " '00101101',\n",
-        " '01000101',\n",
-        " '00001010',\n",
-        " '01000110',\n",
-        " '11000110',\n",
-        " '01101110',\n",
-        " '10011100',\n",
-        " '11100010',\n",
-        " '11011100',\n",
-        " '00111100',\n",
-        " '00001000',\n",
-        " '00011110',\n",
-        " '00010000',\n",
-        " '01000011',\n",
-        " '00001101',\n",
-        " '10101100',\n",
-        " '00100100',\n",
-        " '01001110',\n",
-        " '01110100',\n",
-        " '00111010',\n",
-        " '01110001',\n",
-        " '00100100',\n",
-        " '11000100',\n",
-        " '01001001',\n",
-        " '01001000',\n",
-        " '10001000',\n",
-        " '01011000',\n",
-        " '11100010',\n",
-        " '00010001',\n",
-        " '00010001',\n",
-        " '11110001',\n",
-        " '01000001',\n",
-        " '10000000',\n",
-        " '01001001',\n",
-        " '00111000',\n",
-        " '00000011',\n",
-        " '01011100',\n",
-        " '11000000',\n",
-        " '01110100',\n",
-        " '00010010',\n",
-        " '10100100',\n",
-        " '00001100',\n",
-        " '01000100',\n",
-        " '01000110',\n",
-        " '10101100',\n",
-        " '10010101',\n",
-        " '00000100',\n",
-        " '10000000',\n",
-        " '00110110',\n",
-        " '10110110',\n",
-        " '01100111',\n",
-        " '01101001',\n",
-        " '00010001',\n",
-        " '00110010',\n",
-        " '00100001',\n",
-        " '00010010',\n",
-        " '00000001',\n",
-        " '11101000',\n",
-        " '01110011',\n",
-        " '11010000',\n",
-        " '00001100',\n",
-        " '01110011',\n",
-        " '01001000',\n",
-        " '01011100',\n",
-        " '00011101',\n",
-        " '01101110',\n",
-        " '01101101',\n",
-        " '10001110',\n",
-        " '00000010',\n",
-        " '00010000',\n",
-        " '10000100',\n",
-        " '01110100',\n",
-        " '10011010',\n",
-        " '01000010',\n",
-        " '01100000',\n",
-        " '00001101',\n",
-        " '00100010',\n",
-        " '00100100',\n",
-        " '01001001',\n",
-        " '10111000',\n",
-        " '11011000',\n",
-        " '01000100',\n",
-        " '11001001',\n",
-        " '00010101',\n",
-        " '10100000',\n",
-        " '11110011',\n",
-        " '00010011',\n",
-        " '00010000',\n",
-        " '11100100',\n",
-        " '01000100',\n",
-        " '00010001',\n",
-        " '00101000',\n",
-        " '11011100',\n",
-        " '01001001',\n",
-        " '10110101',\n",
-        " '00000111',\n",
-        " '10011011',\n",
-        " '01001000',\n",
-        " '01110100',\n",
-        " '00100001',\n",
-        " '01000000',\n",
-        " '01100100',\n",
-        " '01000110',\n",
-        " '11000110',\n",
-        " '10000000',\n",
-        " '01100000',\n",
-        " '01101000',\n",
-        " '00011100',\n",
-        " '00111001',\n",
-        " '00010010',\n",
-        " '01000100',\n",
-        " '01000110',\n",
-        " '00000100',\n",
-        " '10111001',\n",
-        " '00100000',\n",
-        " '00001101',\n",
-        " '10011000',\n",
-        " '00011100',\n",
-        " '10111001',\n",
-        " '10001001',\n",
-        " '00011000',\n",
-        " '01100010',\n",
-        " '00000110',\n",
-        " '01000110',\n",
-        " '11001110',\n",
-        " '01100111',\n",
-        " '01011100',\n",
-        " '11011010',\n",
-        " '00111011',\n",
-        " '11001110',\n",
-        " '01110011',\n",
-        " '01100000',\n",
-        " '00100100',\n",
-        " '00010101',\n",
-        " '10010000',\n",
-        " '00000100',\n",
-        " '00100100',\n",
-        " '11010110',\n",
-        " '10001001',\n",
-        " '00100010',\n",
-        " '00110011',\n",
-        " '10110100',\n",
-        " '11101001',\n",
-        " '00010111',\n",
-        " '10010100',\n",
-        " '00001000',\n",
-        " '01011100',\n",
-        " '11001000',\n",
-        " '00000111',\n",
-        " '00010000',\n",
-        " '10100100',\n",
-        " '01000100',\n",
-        " '10010000',\n",
-        " '10000100',\n",
-        " '01100001',\n",
-        " '00010010',\n",
-        " '01000010',\n",
-        " '10101011',\n",
-        " '00111011',\n",
-        " '00100010',\n",
-        " '01001111',\n",
-        " '10001000',\n",
-        " '01100100',\n",
-        " '10000110',\n",
-        " '10010001',\n",
-        " '01101111',\n",
-        " '00111100',\n",
-        " '01011000',\n",
-        " '11100011',\n",
-        " '10100000',\n",
-        " '00000110',\n",
-        " '01101010',\n",
-        " '11100100',\n",
-        " '10111010',\n",
-        " '10100010',\n",
-        " '01101110',\n",
-        " '00011000',\n",
-        " '00010001',\n",
-        " '00100001',\n",
-        " '10111101',\n",
-        " '10111000',\n",
-        " '00011000',\n",
-        " '11000100',\n",
-        " '00000000',\n",
-        " '00111010',\n",
-        " '01100000',\n",
-        " '00111000',\n",
-        " '10001000',\n",
-        " '01111001',\n",
-        " '11010000',\n",
-        " '10001000',\n",
-        " '10001100',\n",
-        " '01001000',\n",
-        " '00110000',\n",
-        " '00010000',\n",
-        " '01010011',\n",
-        " '01110100',\n",
-        " '10011011',\n",
-        " '00010011',\n",
-        " '11010101',\n",
-        " '10100000',\n",
-        " '01110000',\n",
-        " '11011100',\n",
-        " '10000101',\n",
-        " '00111000',\n",
-        " '10010011',\n",
-        " '00010010',\n",
-        " '00011010',\n",
-        " '01000110',\n",
-        " '10010010',\n",
-        " '10010001',\n",
-        " '10001010',\n",
-        " '00100100',\n",
-        " '00110001',\n",
-        " '00111010',\n",
-        " '10010001',\n",
-        " '00000001',\n",
-        " '10010111',\n",
-        " '01010100',\n",
-        " '00110001',\n",
-        " '10010100',\n",
-        " '01111011',\n",
-        " '11000110',\n",
-        " '10001001',\n",
-        " '10010000',\n",
-        " '00001101',\n",
-        " '00011010',\n",
-        " '00100110',\n",
-        " '11000000',\n",
-        " '00000001',\n",
-        " '00000000',\n",
-        " '01000001',\n",
-        " '00010110',\n",
-        " '01000111',\n",
-        " '00110101',\n",
-        " '10110001',\n",
-        " '00100001',\n",
-        " '00000110',\n",
-        " '00000111',\n",
-        " '00001100',\n",
-        " '00101110',\n",
-        " '01000101',\n",
-        " '00011000',\n",
-        " '01000101',\n",
-        " '11000101',\n",
-        " '11010011',\n",
-        " '01101100',\n",
-        " '11100111',\n",
-        " '00110011',\n",
-        " '00100010',\n",
-        " '01101101',\n",
-        " '10001010',\n",
-        " '11100010',\n",
-        " '10000010',\n",
-        " '00110101',\n",
-        " '10101000',\n",
-        " '01010010',\n",
-        " '11110001',\n",
-        " '00100111',\n",
-        " '00011010',\n",
-        " '01010011',\n",
-        " '00010010',\n",
-        " '00001011',\n",
-        " '10000111',\n",
-        " '10100001',\n",
-        " '11110101',\n",
-        " '01000000',\n",
-        " '11101011',\n",
-        " '00101001',\n",
-        " '00110001',\n",
-        " '10100010',\n",
-        " '00100010',\n",
-        " '00000001',\n",
-        " '00100100',\n",
-        " '00100010',\n",
-        " '01110010',\n",
-        " '01101011',\n",
-        " '01001000',\n",
-        " '00001001',\n",
-        " '10100010',\n",
-        " '01101110',\n",
-        " '01100100',\n",
-        " '01001110',\n",
-        " '00010110',\n",
-        " '10011101',\n",
-        " '10101000',\n",
-        " '00011011',\n",
-        " '11100010',\n",
-        " '10111000',\n",
-        " '10010001',\n",
-        " '11101110',\n",
-        " '11000011',\n",
-        " '01000000',\n",
-        " '10111001',\n",
-        " '00110110',\n",
-        " '10110010',\n",
-        " '00011011',\n",
-        " '10100100',\n",
-        " '00000110',\n",
-        " '10010010',\n",
-        " '01001000',\n",
-        " '10011001',\n",
-        " '01000000',\n",
-        " '01000110',\n",
-        " '10101110',\n",
-        " '01100110',\n",
-        " '01110000',\n",
-        " '11000001',\n",
-        " '00111001',\n",
-        " '10010000',\n",
-        " '10000000',\n",
-        " '01000100',\n",
-        " '10010000',\n",
-        " '00101000',\n",
-        " '10111001',\n",
-        " '11010011',\n",
-        " '01100100',\n",
-        " '10011000',\n",
-        " '01010011',\n",
-        " '10000010',\n",
-        " '10000100',\n",
-        " '01101010',\n",
-        " '00100011',\n",
-        " '00100011',\n",
-        " '00011111',\n",
-        " '00001101',\n",
-        " '10110001',\n",
-        " '00010000',\n",
-        " '11011001',\n",
-        " '10010000',\n",
-        " '11001110',\n",
-        " '00011010',\n",
-        " '00010000',\n",
-        " '10110010',\n",
-        " '00010000',\n",
-        " '01110011',\n",
-        " '00000100',\n",
-        " '01011010',\n",
-        " '11101001',\n",
-        " '01000100',\n",
-        " '01000000',\n",
-        " '00000001',\n",
-        " '00011010',\n",
-        " '00111001',\n",
-        " '10001010',\n",
-        " '10010011',\n",
-        " '10011001',\n",
-        " '01000111',\n",
-        " '00010000',\n",
-        " '10010000',\n",
-        " '11110011',\n",
-        " '01100001',\n",
-        " '01010001',\n",
-        " '00110111',\n",
-        " '00111010',\n",
-        " '00100011',\n",
-        " '10001101',\n",
-        " '00010000',\n",
-        " '00000111',\n",
-        " '01100000',\n",
-        " '00000000',\n",
-        " '01101011',\n",
-        " '10001000',\n",
-        " '01000101',\n",
-        " '10001101',\n",
-        " '11001000',\n",
-        " '01101001',\n",
-        " '11101001',\n",
-        " '00100011',\n",
-        " '00100010',\n",
-        " '01100100',\n",
-        " '00000011',\n",
-        " '10100010',\n",
-        " '10000010',\n",
-        " '00001000',\n",
-        " '10010101',\n",
-        " '00100011',\n",
-        " '00011011',\n",
-        " '00111000',\n",
-        " '10000010',\n",
-        " '01101100',\n",
-        " '10011001',\n",
-        " '01011110',\n",
-        " '01001010',\n",
-        " '00001010',\n",
-        " '10010011',\n",
-        " '00000001',\n",
-        " '11000000',\n",
-        " '11001001',\n",
-        " '10110100',\n",
-        " '10010110',\n",
-        " '01110011',\n",
-        " '01010000',\n",
-        " '00100001',\n",
-        " '10010000',\n",
-        " '10001100',\n",
-        " '10001011',\n",
-        " '11000000',\n",
-        " '11100101',\n",
-        " '10100010',\n",
-        " '01101110',\n",
-        " '00000001',\n",
-        " '01001001',\n",
-        " '00100111',\n",
-        " '00111010',\n",
-        " '01010010',\n",
-        " '01111001',\n",
-        " '01011010',\n",
-        " '10110110',\n",
-        " '10010000',\n",
-        " '10001110',\n",
-        " '01110100',\n",
-        " '11000000',\n",
-        " '00100011',\n",
-        " '10101101',\n",
-        " '01101000',\n",
-        " '10001100',\n",
-        " '10100101',\n",
-        " '01111001',\n",
-        " '00111000',\n",
-        " '10101111',\n",
-        " '00011001',\n",
-        " '01100110',\n",
-        " '01011000',\n",
-        " '10110101',\n",
-        " '11110001',\n",
-        " '00000001',\n",
-        " '00001000',\n",
-        " '00001100',\n",
-        " '00101101',\n",
-        " '11001101',\n",
-        " '00000001',\n",
-        " '11000001',\n",
-        " '01001001',\n",
-        " '10110110',\n",
-        " '01100010',\n",
-        " '01101100',\n",
-        " '11000100',\n",
-        " '00010000',\n",
-        " '01011001',\n",
-        " '01101110',\n",
-        " '01101001',\n",
-        " '00001011',\n",
-        " '00110111',\n",
-        " '00000010',\n",
-        " '01100100',\n",
-        " '00010101',\n",
-        " '01011101',\n",
-        " '01100001',\n",
-        " '10101110',\n",
-        " '11010101',\n",
-        " '01101011',\n",
-        " '01001000',\n",
-        " '01000001',\n",
-        " '11001101',\n",
-        " '00001000',\n",
-        " '01110010',\n",
-        " '00001101',\n",
-        " '00110010',\n",
-        " '00011001',\n",
-        " '10010011',\n",
-        " '00000001',\n",
-        " '11001000',\n",
-        " '01000000',\n",
-        " '01001100',\n",
-        " '10000101',\n",
-        " '00000000',\n",
-        " '00001000',\n",
-        " '11111000',\n",
-        " '11000100',\n",
-        " '01010001',\n",
-        " '01110100',\n",
-        " '10001110',\n",
-        " '01000010',\n",
-        " '01000110',\n",
-        " '00101111',\n",
-        " '00000010',\n",
-        " '11001000',\n",
-        " '00110100',\n",
-        " '00010001',\n",
-        " '10100110',\n",
-        " '01000000',\n",
-        " '11100011',\n",
-        " '00010010',\n",
-        " '00111010',\n",
-        " '10000111',\n",
-        " '10101001',\n",
-        " '00100101',\n",
-        " '01001000',\n",
-        " '10111011',\n",
-        " '00010011',\n",
-        " '01101100',\n",
-        " '10011101',\n",
-        " '00100100',\n",
-        " '00110110',\n",
-        " '10001000',\n",
-        " '10100010',\n",
-        " '00011100',\n",
-        " '01010111',\n",
-        " '11000100',\n",
-        " '01100000']"
+        "['00000',\n",
+        " '00101',\n",
+        " '00010',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '10100',\n",
+        " '01110',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '00000',\n",
+        " '00010',\n",
+        " '10011',\n",
+        " '00111',\n",
+        " '10001',\n",
+        " '01000',\n",
+        " '01110',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '00010',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '10011',\n",
+        " '00111',\n",
+        " '10010',\n",
+        " '00111',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '00000',\n",
+        " '00111',\n",
+        " '01010',\n",
+        " '11000',\n",
+        " '01110',\n",
+        " '10001',\n",
+        " '01111',\n",
+        " '00101',\n",
+        " '10001',\n",
+        " '00110',\n",
+        " '00100',\n",
+        " '01110',\n",
+        " '00000',\n",
+        " '00011',\n",
+        " '01111',\n",
+        " '01111',\n",
+        " '01001',\n",
+        " '01101',\n",
+        " '00110',\n",
+        " '01011',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '00101',\n",
+        " '00100',\n",
+        " '01110',\n",
+        " '00101',\n",
+        " '01000',\n",
+        " '01110',\n",
+        " '10001',\n",
+        " '10011',\n",
+        " '10010',\n",
+        " '00011',\n",
+        " '00011',\n",
+        " '01110',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '10100',\n",
+        " '01100',\n",
+        " '10010',\n",
+        " '00010',\n",
+        " '10001',\n",
+        " '10100',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '00101',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '01011',\n",
+        " '00000',\n",
+        " '00000',\n",
+        " '00101',\n",
+        " '10010',\n",
+        " '10011',\n",
+        " '10110',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '10101',\n",
+        " '01110',\n",
+        " '01110',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '00111',\n",
+        " '10100',\n",
+        " '00000',\n",
+        " '00111',\n",
+        " '10001',\n",
+        " '00000',\n",
+        " '10101',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '10010',\n",
+        " '10101',\n",
+        " '10010',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '01011',\n",
+        " '00111',\n",
+        " '01011',\n",
+        " '01110',\n",
+        " '10010',\n",
+        " '10011',\n",
+        " '00011',\n",
+        " '01110',\n",
+        " '00000',\n",
+        " '01011',\n",
+        " '01110',\n",
+        " '11000',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '01100',\n",
+        " '01101',\n",
+        " '01101',\n",
+        " '00011',\n",
+        " '01000',\n",
+        " '00110',\n",
+        " '01101',\n",
+        " '01101',\n",
+        " '10001',\n",
+        " '00111',\n",
+        " '01110',\n",
+        " '00111',\n",
+        " '00111',\n",
+        " '10011',\n",
+        " '10010',\n",
+        " '01101',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '01000',\n",
+        " '01011',\n",
+        " '01101',\n",
+        " '00010',\n",
+        " '01101',\n",
+        " '10010',\n",
+        " '10010',\n",
+        " '01000',\n",
+        " '00010',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '00000',\n",
+        " '01101',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '01000',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '10110',\n",
+        " '10011',\n",
+        " '00000',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '10001',\n",
+        " '10101',\n",
+        " '01110',\n",
+        " '00110',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '11000',\n",
+        " '10110',\n",
+        " '10010',\n",
+        " '10010',\n",
+        " '00011',\n",
+        " '00110',\n",
+        " '01111',\n",
+        " '10101',\n",
+        " '01110',\n",
+        " '01000',\n",
+        " '00000',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '01110',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '00011',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '01000',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '10111',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '00110',\n",
+        " '10001',\n",
+        " '01111',\n",
+        " '10010',\n",
+        " '10010',\n",
+        " '00111',\n",
+        " '00000',\n",
+        " '00011',\n",
+        " '00111',\n",
+        " '00011',\n",
+        " '10011',\n",
+        " '01110',\n",
+        " '01000',\n",
+        " '01111',\n",
+        " '00000',\n",
+        " '00000',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '10111',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '00110',\n",
+        " '10001',\n",
+        " '01110',\n",
+        " '00001',\n",
+        " '10011',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '10001',\n",
+        " '01110',\n",
+        " '01000',\n",
+        " '10001',\n",
+        " '11000',\n",
+        " '01111',\n",
+        " '00001',\n",
+        " '00110',\n",
+        " '00100',\n",
+        " '00011',\n",
+        " '00010',\n",
+        " '01011',\n",
+        " '01011',\n",
+        " '01000',\n",
+        " '10110',\n",
+        " '00000',\n",
+        " '01011',\n",
+        " '00000',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '01000',\n",
+        " '00110',\n",
+        " '10001',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '10110',\n",
+        " '11000',\n",
+        " '10001',\n",
+        " '01011',\n",
+        " '01000',\n",
+        " '01100',\n",
+        " '01011',\n",
+        " '01111',\n",
+        " '10010',\n",
+        " '10011',\n",
+        " '01110',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '00101',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '00011',\n",
+        " '01100',\n",
+        " '10100',\n",
+        " '00000',\n",
+        " '10001',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '01000',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '01011',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '10110',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '00111',\n",
+        " '10001',\n",
+        " '10011',\n",
+        " '01011',\n",
+        " '10010',\n",
+        " '10011',\n",
+        " '01110',\n",
+        " '00001',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '01101',\n",
+        " '10010',\n",
+        " '01011',\n",
+        " '10101',\n",
+        " '00101',\n",
+        " '01000',\n",
+        " '10101',\n",
+        " '00011',\n",
+        " '01110',\n",
+        " '10101',\n",
+        " '10011',\n",
+        " '01111',\n",
+        " '01110',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '00010',\n",
+        " '01000',\n",
+        " '01110',\n",
+        " '00111',\n",
+        " '01000',\n",
+        " '01111',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '10101',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00011',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '10110',\n",
+        " '00101',\n",
+        " '00000',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '00111',\n",
+        " '00100',\n",
+        " '00001',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '10011',\n",
+        " '01110',\n",
+        " '00111',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '01111',\n",
+        " '01101',\n",
+        " '00010',\n",
+        " '01010',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '01101',\n",
+        " '00111',\n",
+        " '10110',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '01100',\n",
+        " '10101',\n",
+        " '11000',\n",
+        " '01111',\n",
+        " '10001',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '01110',\n",
+        " '01101',\n",
+        " '01101',\n",
+        " '00000',\n",
+        " '10010',\n",
+        " '00110',\n",
+        " '00011',\n",
+        " '00100',\n",
+        " '00011',\n",
+        " '01110',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '01110',\n",
+        " '00000',\n",
+        " '00000',\n",
+        " '01100',\n",
+        " '10011',\n",
+        " '00010',\n",
+        " '01000',\n",
+        " '00010',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '01000',\n",
+        " '00101',\n",
+        " '01101',\n",
+        " '00000',\n",
+        " '00011',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '10001',\n",
+        " '10011',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '01110',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '00111',\n",
+        " '00010',\n",
+        " '01000',\n",
+        " '00010',\n",
+        " '10011',\n",
+        " '01111',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '00111',\n",
+        " '01011',\n",
+        " '00011',\n",
+        " '00111',\n",
+        " '10010',\n",
+        " '00101',\n",
+        " '10111',\n",
+        " '10010',\n",
+        " '01110',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '10011',\n",
+        " '00010',\n",
+        " '10011',\n",
+        " '00001',\n",
+        " '00001',\n",
+        " '10010',\n",
+        " '01110',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '00011',\n",
+        " '01011',\n",
+        " '11000',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '10001',\n",
+        " '10100',\n",
+        " '01101',\n",
+        " '10001',\n",
+        " '00010',\n",
+        " '00100',\n",
+        " '01111',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '00111',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '10100',\n",
+        " '00111',\n",
+        " '01101',\n",
+        " '01010',\n",
+        " '10011',\n",
+        " '00000',\n",
+        " '00010',\n",
+        " '00100',\n",
+        " '00010',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '01011',\n",
+        " '10001',\n",
+        " '10110',\n",
+        " '01101',\n",
+        " '01000',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '00011',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '01110',\n",
+        " '00110',\n",
+        " '00010',\n",
+        " '00100',\n",
+        " '01110',\n",
+        " '01100',\n",
+        " '01101',\n",
+        " '10001',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '01001',\n",
+        " '00111',\n",
+        " '00000',\n",
+        " '00110',\n",
+        " '00000',\n",
+        " '00001',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '01000',\n",
+        " '10011',\n",
+        " '01011',\n",
+        " '10110',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '00001',\n",
+        " '01100',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '01011',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '00110',\n",
+        " '10010',\n",
+        " '01101',\n",
+        " '00111',\n",
+        " '00100',\n",
+        " '00001',\n",
+        " '01000',\n",
+        " '01110',\n",
+        " '10010',\n",
+        " '00011',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '00000',\n",
+        " '00101',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '00111',\n",
+        " '01110',\n",
+        " '00010',\n",
+        " '01000',\n",
+        " '00101',\n",
+        " '00100',\n",
+        " '10101',\n",
+        " '01100',\n",
+        " '00101',\n",
+        " '00000',\n",
+        " '10011',\n",
+        " '00000',\n",
+        " '01101',\n",
+        " '00000',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '01000',\n",
+        " '00000',\n",
+        " '00110',\n",
+        " '01101',\n",
+        " '00111',\n",
+        " '00000',\n",
+        " '10011',\n",
+        " '01101',\n",
+        " '01100',\n",
+        " '01000',\n",
+        " '00001',\n",
+        " '01101',\n",
+        " '01000',\n",
+        " '10100',\n",
+        " '00101',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '10001',\n",
+        " '10011',\n",
+        " '01110',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '01101',\n",
+        " '11000',\n",
+        " '01111',\n",
+        " '00000',\n",
+        " '01000',\n",
+        " '00011',\n",
+        " '11000',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '00110',\n",
+        " '00011',\n",
+        " '01101',\n",
+        " '01100',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '00111',\n",
+        " '00111',\n",
+        " '01000',\n",
+        " '01110',\n",
+        " '10011',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '00010',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '01011',\n",
+        " '00011',\n",
+        " '10001',\n",
+        " '00001',\n",
+        " '00010',\n",
+        " '00100',\n",
+        " '01111',\n",
+        " '10001',\n",
+        " '01000',\n",
+        " '00110',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '01110',\n",
+        " '00000',\n",
+        " '00011',\n",
+        " '01011',\n",
+        " '10011',\n",
+        " '00000',\n",
+        " '00111',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '10101',\n",
+        " '00100',\n",
+        " '00001',\n",
+        " '10001',\n",
+        " '00010',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '10101',\n",
+        " '00000',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '00011',\n",
+        " '01101',\n",
+        " '01101',\n",
+        " '10011',\n",
+        " '00111',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '00000',\n",
+        " '00111',\n",
+        " '10100',\n",
+        " '00111',\n",
+        " '00111',\n",
+        " '10100',\n",
+        " '00000',\n",
+        " '01100',\n",
+        " '01110',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '00101',\n",
+        " '11000',\n",
+        " '00111',\n",
+        " '01011',\n",
+        " '01110',\n",
+        " '01101',\n",
+        " '10110',\n",
+        " '00111',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '01110',\n",
+        " '10010',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '11000',\n",
+        " '00000',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '01110',\n",
+        " '00110',\n",
+        " '11000',\n",
+        " '01000',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '10001',\n",
+        " '01011',\n",
+        " '01000',\n",
+        " '00111',\n",
+        " '10011',\n",
+        " '00010',\n",
+        " '01100',\n",
+        " '01000',\n",
+        " '01110',\n",
+        " '01000',\n",
+        " '10001',\n",
+        " '00000',\n",
+        " '10001',\n",
+        " '00101',\n",
+        " '00011',\n",
+        " '01110',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '01101',\n",
+        " '01000',\n",
+        " '00111',\n",
+        " '10011',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '00111',\n",
+        " '01000',\n",
+        " '01000',\n",
+        " '01010',\n",
+        " '00000',\n",
+        " '01100',\n",
+        " '10001',\n",
+        " '00011',\n",
+        " '01100',\n",
+        " '01101',\n",
+        " '00000',\n",
+        " '00011',\n",
+        " '00000',\n",
+        " '01101',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '00011',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '10010',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '11000',\n",
+        " '00010',\n",
+        " '01011',\n",
+        " '10010',\n",
+        " '01000',\n",
+        " '00000',\n",
+        " '01101',\n",
+        " '10011',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '01011',\n",
+        " '10011',\n",
+        " '00010',\n",
+        " '01000',\n",
+        " '11000',\n",
+        " '01100',\n",
+        " '01000',\n",
+        " '00011',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '00111',\n",
+        " '01011',\n",
+        " '10011',\n",
+        " '01101',\n",
+        " '00011',\n",
+        " '10111',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '01100',\n",
+        " '00000',\n",
+        " '10010',\n",
+        " '00001',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '01011',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '01000',\n",
+        " '10001',\n",
+        " '10011',\n",
+        " '10110',\n",
+        " '10011',\n",
+        " '10100',\n",
+        " '10001',\n",
+        " '01111',\n",
+        " '00101',\n",
+        " '00000',\n",
+        " '01000',\n",
+        " '01011',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '00100',\n",
+        " '00101',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '01000',\n",
+        " '01000',\n",
+        " '01000',\n",
+        " '11000',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '01000',\n",
+        " '01010',\n",
+        " '10101',\n",
+        " '10011',\n",
+        " '10110',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '01111',\n",
+        " '10001',\n",
+        " '00001',\n",
+        " '10010',\n",
+        " '01000',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '01011',\n",
+        " '01111',\n",
+        " '00111',\n",
+        " '10001',\n",
+        " '01100',\n",
+        " '01110',\n",
+        " '00111',\n",
+        " '01000',\n",
+        " '00000',\n",
+        " '00110',\n",
+        " '01101',\n",
+        " '01011',\n",
+        " '10010',\n",
+        " '01011',\n",
+        " '10101',\n",
+        " '01000',\n",
+        " '10011',\n",
+        " '01110',\n",
+        " '00011',\n",
+        " '00000',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '00011',\n",
+        " '01111',\n",
+        " '01101',\n",
+        " '11000',\n",
+        " '00011',\n",
+        " '00011',\n",
+        " '00010',\n",
+        " '00000',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '10011',\n",
+        " '00000',\n",
+        " '00111',\n",
+        " '00010',\n",
+        " '00100',\n",
+        " '00111',\n",
+        " '10011',\n",
+        " '10100',\n",
+        " '00100',\n",
+        " '01000',\n",
+        " '10001',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '00011',\n",
+        " '00000',\n",
+        " '00100',\n",
+        " '00010',\n",
+        " '10011',\n",
+        " '01110',\n",
+        " '10010',\n",
+        " '01101',\n",
+        " '10001',\n",
+        " '00111',\n",
+        " '10101',\n",
+        " '01101',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '00011',\n",
+        " '01110',\n",
+        " '01000',\n",
+        " '01010',\n",
+        " '01110',\n",
+        " '00100',\n",
+        " '10011',\n",
+        " '00010',\n",
+        " '01000',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '01101',\n",
+        " '00100',\n",
+        " '10100',\n",
+        " '10001',\n",
+        " '10001',\n",
+        " '01000',\n",
+        " '10010',\n",
+        " '00011',\n",
+        " '00010',\n",
+        " '01110',\n",
+        " '10100',\n",
+        " '10001',\n",
+        " '00000',\n",
+        " '00110',\n",
+        " '01011',\n",
+        " '10101',\n",
+        " '01000',\n",
+        " '01100',\n",
+        " '01100',\n",
+        " '10100',\n",
+        " '01111',\n",
+        " '01111',\n",
+        " '00011',\n",
+        " '01000',\n",
+        " '10011',\n",
+        " '00100',\n",
+        " '00000',\n",
+        " '01101',\n",
+        " '00011',\n",
+        " '01000',\n",
+        " '10011',\n",
+        " '01100',\n",
+        " '00000',\n",
+        " '00000',\n",
+        " '01000',\n",
+        " '00000',\n",
+        " '01000',\n",
+        " '00100',\n",
+        " '01011',\n",
+        " '00100',\n",
+        " '01110',\n",
+        " '01101',\n",
+        " '01101',\n",
+        " '10001',\n",
+        " '00100',\n",
+        " '00100',\n",
+        " '00011',\n",
+        " '00000',\n",
+        " '01110',\n",
+        " '00011',\n",
+        " '00001',\n",
+        " '01110',\n",
+        " '01000',\n",
+        " '10100',\n",
+        " '01100',\n",
+        " '00100',\n",
+        " '01011',\n",
+        " '10001',\n",
+        " '01110',\n",
+        " '10011',\n",
+        " '01101',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '10011',\n",
+        " '00110',\n",
+        " '01000',\n",
+        " '10011',\n",
+        " '01101',\n",
+        " ...]"
        ]
       }
      ],
-     "prompt_number": 21
+     "prompt_number": 8
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "[(int(c, 2)) for c in chunks(c8b, 8)]"
+      "[(int(c, 2)) for c in chunks(c8b, 5)]"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 20,
+       "prompt_number": 9,
        "text": [
-        "[1,\n",
-        " 68,\n",
-        " 2,\n",
-        " 81,\n",
-        " 211,\n",
-        " 152,\n",
+        "[0,\n",
         " 5,\n",
-        " 51,\n",
-        " 197,\n",
+        " 2,\n",
+        " 0,\n",
+        " 4,\n",
+        " 20,\n",
         " 14,\n",
-        " 89,\n",
-        " 38,\n",
-        " 41,\n",
-        " 18,\n",
-        " 51,\n",
-        " 60,\n",
-        " 143,\n",
-        " 56,\n",
-        " 128,\n",
-        " 234,\n",
-        " 195,\n",
-        " 162,\n",
-        " 242,\n",
-        " 196,\n",
-        " 196,\n",
-        " 112,\n",
-        " 6,\n",
-        " 247,\n",
-        " 165,\n",
-        " 166,\n",
-        " 92,\n",
-        " 201,\n",
-        " 22,\n",
-        " 144,\n",
-        " 164,\n",
-        " 113,\n",
-        " 80,\n",
-        " 232,\n",
-        " 206,\n",
-        " 67,\n",
-        " 27,\n",
-        " 136,\n",
-        " 74,\n",
-        " 50,\n",
-        " 66,\n",
-        " 141,\n",
-        " 9,\n",
-        " 22,\n",
-        " 148,\n",
-        " 147,\n",
-        " 88,\n",
-        " 0,\n",
-        " 89,\n",
-        " 78,\n",
-        " 200,\n",
-        " 35,\n",
-        " 103,\n",
-        " 26,\n",
-        " 185,\n",
-        " 205,\n",
-        " 36,\n",
-        " 79,\n",
-        " 64,\n",
-        " 30,\n",
-        " 32,\n",
-        " 169,\n",
-        " 34,\n",
-        " 66,\n",
-        " 78,\n",
-        " 85,\n",
-        " 146,\n",
-        " 8,\n",
-        " 179,\n",
-        " 173,\n",
-        " 210,\n",
-        " 152,\n",
-        " 220,\n",
-        " 5,\n",
-        " 187,\n",
+        " 19,\n",
+        " 19,\n",
         " 0,\n",
-        " 36,\n",
-        " 152,\n",
-        " 214,\n",
-        " 141,\n",
-        " 6,\n",
-        " 107,\n",
-        " 98,\n",
-        " 119,\n",
-        " 28,\n",
-        " 243,\n",
-        " 147,\n",
-        " 64,\n",
-        " 228,\n",
-        " 45,\n",
-        " 162,\n",
-        " 108,\n",
-        " 164,\n",
-        " 129,\n",
-        " 68,\n",
-        " 128,\n",
-        " 107,\n",
-        " 72,\n",
-        " 68,\n",
-        " 33,\n",
-        " 4,\n",
-        " 141,\n",
-        " 166,\n",
-        " 6,\n",
-        " 146,\n",
-        " 81,\n",
-        " 171,\n",
-        " 140,\n",
-        " 130,\n",
-        " 35,\n",
-        " 22,\n",
-        " 148,\n",
-        " 134,\n",
-        " 103,\n",
-        " 213,\n",
-        " 200,\n",
         " 2,\n",
-        " 36,\n",
+        " 19,\n",
+        " 7,\n",
+        " 17,\n",
+        " 8,\n",
+        " 14,\n",
+        " 11,\n",
+        " 4,\n",
+        " 19,\n",
+        " 2,\n",
+        " 18,\n",
+        " 4,\n",
+        " 17,\n",
+        " 19,\n",
+        " 7,\n",
+        " 18,\n",
         " 7,\n",
+        " 19,\n",
+        " 17,\n",
         " 0,\n",
-        " 142,\n",
-        " 1,\n",
         " 7,\n",
-        " 22,\n",
-        " 162,\n",
-        " 113,\n",
-        " 109,\n",
-        " 200,\n",
-        " 131,\n",
-        " 69,\n",
-        " 242,\n",
-        " 145,\n",
-        " 192,\n",
-        " 51,\n",
-        " 142,\n",
-        " 110,\n",
-        " 67,\n",
-        " 192,\n",
-        " 9,\n",
-        " 146,\n",
-        " 228,\n",
-        " 107,\n",
-        " 73,\n",
-        " 32,\n",
-        " 26,\n",
-        " 46,\n",
-        " 12,\n",
-        " 214,\n",
-        " 73,\n",
-        " 69,\n",
-        " 177,\n",
-        " 114,\n",
-        " 35,\n",
-        " 135,\n",
-        " 132,\n",
-        " 196,\n",
+        " 10,\n",
         " 24,\n",
-        " 150,\n",
-        " 180,\n",
-        " 88,\n",
-        " 11,\n",
-        " 2,\n",
-        " 200,\n",
-        " 70,\n",
-        " 160,\n",
-        " 209,\n",
-        " 139,\n",
-        " 109,\n",
-        " 136,\n",
-        " 173,\n",
-        " 12,\n",
-        " 91,\n",
-        " 229,\n",
-        " 55,\n",
-        " 44,\n",
-        " 133,\n",
-        " 156,\n",
-        " 70,\n",
-        " 202,\n",
-        " 2,\n",
-        " 40,\n",
-        " 33,\n",
-        " 8,\n",
-        " 132,\n",
-        " 1,\n",
-        " 203,\n",
-        " 105,\n",
-        " 45,\n",
-        " 32,\n",
-        " 56,\n",
-        " 241,\n",
-        " 154,\n",
-        " 229,\n",
-        " 55,\n",
-        " 4,\n",
-        " 147,\n",
-        " 108,\n",
-        " 151,\n",
-        " 82,\n",
-        " 162,\n",
-        " 163,\n",
-        " 117,\n",
-        " 102,\n",
-        " 247,\n",
-        " 0,\n",
-        " 132,\n",
-        " 68,\n",
-        " 132,\n",
-        " 135,\n",
-        " 29,\n",
-        " 15,\n",
-        " 145,\n",
-        " 42,\n",
-        " 66,\n",
         " 14,\n",
-        " 100,\n",
-        " 177,\n",
-        " 65,\n",
-        " 22,\n",
-        " 156,\n",
-        " 129,\n",
-        " 89,\n",
-        " 0,\n",
-        " 233,\n",
-        " 184,\n",
-        " 243,\n",
-        " 156,\n",
-        " 200,\n",
-        " 246,\n",
-        " 137,\n",
-        " 64,\n",
-        " 115,\n",
-        " 79,\n",
-        " 98,\n",
-        " 77,\n",
-        " 149,\n",
-        " 195,\n",
-        " 227,\n",
-        " 18,\n",
-        " 57,\n",
-        " 173,\n",
+        " 17,\n",
+        " 15,\n",
+        " 5,\n",
+        " 17,\n",
+        " 6,\n",
         " 4,\n",
-        " 140,\n",
-        " 50,\n",
-        " 13,\n",
-        " 196,\n",
-        " 33,\n",
-        " 28,\n",
+        " 14,\n",
         " 0,\n",
-        " 50,\n",
-        " 98,\n",
-        " 64,\n",
-        " 167,\n",
-        " 52,\n",
-        " 21,\n",
-        " 160,\n",
-        " 28,\n",
-        " 73,\n",
-        " 40,\n",
-        " 206,\n",
-        " 68,\n",
-        " 139,\n",
-        " 164,\n",
-        " 73,\n",
-        " 196,\n",
-        " 226,\n",
-        " 64,\n",
-        " 166,\n",
-        " 249,\n",
-        " 0,\n",
-        " 4,\n",
-        " 58,\n",
-        " 198,\n",
-        " 121,\n",
-        " 22,\n",
-        " 242,\n",
-        " 112,\n",
-        " 29,\n",
-        " 49,\n",
-        " 76,\n",
-        " 33,\n",
-        " 147,\n",
-        " 136,\n",
-        " 136,\n",
-        " 182,\n",
-        " 64,\n",
-        " 26,\n",
-        " 241,\n",
-        " 56,\n",
-        " 198,\n",
-        " 141,\n",
-        " 136,\n",
-        " 136,\n",
-        " 249,\n",
-        " 204,\n",
-        " 241,\n",
-        " 37,\n",
-        " 14,\n",
-        " 213,\n",
-        " 76,\n",
-        " 2,\n",
-        " 32,\n",
-        " 136,\n",
-        " 69,\n",
-        " 198,\n",
-        " 205,\n",
-        " 68,\n",
-        " 72,\n",
-        " 66,\n",
-        " 0,\n",
-        " 146,\n",
-        " 33,\n",
-        " 8,\n",
-        " 129,\n",
-        " 162,\n",
-        " 78,\n",
-        " 48,\n",
-        " 136,\n",
-        " 230,\n",
-        " 54,\n",
-        " 51,\n",
-        " 34,\n",
-        " 78,\n",
         " 3,\n",
-        " 0,\n",
-        " 50,\n",
-        " 35,\n",
-        " 81,\n",
-        " 53,\n",
-        " 218,\n",
-        " 113,\n",
-        " 104,\n",
-        " 88,\n",
-        " 130,\n",
-        " 46,\n",
-        " 64,\n",
-        " 137,\n",
-        " 38,\n",
-        " 73,\n",
-        " 69,\n",
-        " 166,\n",
-        " 147,\n",
-        " 78,\n",
-        " 64,\n",
-        " 161,\n",
-        " 210,\n",
-        " 26,\n",
-        " 8,\n",
-        " 208,\n",
-        " 21,\n",
-        " 100,\n",
-        " 68,\n",
-        " 128,\n",
-        " 119,\n",
+        " 15,\n",
+        " 15,\n",
         " 9,\n",
+        " 13,\n",
+        " 6,\n",
+        " 11,\n",
+        " 19,\n",
+        " 4,\n",
+        " 17,\n",
+        " 13,\n",
+        " 4,\n",
         " 5,\n",
-        " 37,\n",
-        " 88,\n",
-        " 80,\n",
-        " 76,\n",
-        " 13,\n",
-        " 4,\n",
-        " 226,\n",
-        " 212,\n",
-        " 0,\n",
-        " 205,\n",
-        " 56,\n",
-        " 38,\n",
-        " 214,\n",
-        " 32,\n",
-        " 45,\n",
-        " 69,\n",
-        " 10,\n",
-        " 70,\n",
-        " 198,\n",
-        " 110,\n",
-        " 156,\n",
-        " 226,\n",
-        " 220,\n",
-        " 60,\n",
-        " 8,\n",
-        " 30,\n",
-        " 16,\n",
-        " 67,\n",
-        " 13,\n",
-        " 172,\n",
-        " 36,\n",
-        " 78,\n",
-        " 116,\n",
-        " 58,\n",
-        " 113,\n",
-        " 36,\n",
-        " 196,\n",
-        " 73,\n",
-        " 72,\n",
-        " 136,\n",
-        " 88,\n",
-        " 226,\n",
-        " 17,\n",
-        " 17,\n",
-        " 241,\n",
-        " 65,\n",
-        " 128,\n",
-        " 73,\n",
-        " 56,\n",
-        " 3,\n",
-        " 92,\n",
-        " 192,\n",
-        " 116,\n",
+        " 4,\n",
+        " 14,\n",
+        " 5,\n",
+        " 8,\n",
+        " 14,\n",
+        " 17,\n",
+        " 19,\n",
         " 18,\n",
-        " 164,\n",
+        " 3,\n",
+        " 3,\n",
+        " 14,\n",
+        " 4,\n",
+        " 4,\n",
+        " 20,\n",
         " 12,\n",
-        " 68,\n",
-        " 70,\n",
-        " 172,\n",
-        " 149,\n",
-        " 4,\n",
-        " 128,\n",
-        " 54,\n",
-        " 182,\n",
-        " 103,\n",
-        " 105,\n",
-        " 17,\n",
-        " 50,\n",
-        " 33,\n",
         " 18,\n",
-        " 1,\n",
-        " 232,\n",
-        " 115,\n",
-        " 208,\n",
-        " 12,\n",
-        " 115,\n",
-        " 72,\n",
-        " 92,\n",
-        " 29,\n",
-        " 110,\n",
-        " 109,\n",
-        " 142,\n",
         " 2,\n",
-        " 16,\n",
-        " 132,\n",
-        " 116,\n",
-        " 154,\n",
-        " 66,\n",
-        " 96,\n",
-        " 13,\n",
-        " 34,\n",
-        " 36,\n",
-        " 73,\n",
-        " 184,\n",
-        " 216,\n",
-        " 68,\n",
-        " 201,\n",
-        " 21,\n",
-        " 160,\n",
-        " 243,\n",
-        " 19,\n",
-        " 16,\n",
-        " 228,\n",
-        " 68,\n",
         " 17,\n",
-        " 40,\n",
-        " 220,\n",
-        " 73,\n",
-        " 181,\n",
-        " 7,\n",
-        " 155,\n",
-        " 72,\n",
-        " 116,\n",
-        " 33,\n",
-        " 64,\n",
-        " 100,\n",
-        " 70,\n",
-        " 198,\n",
-        " 128,\n",
-        " 96,\n",
-        " 104,\n",
-        " 28,\n",
-        " 57,\n",
+        " 20,\n",
+        " 4,\n",
+        " 17,\n",
+        " 13,\n",
+        " 5,\n",
+        " 4,\n",
+        " 19,\n",
+        " 11,\n",
+        " 0,\n",
+        " 0,\n",
+        " 5,\n",
         " 18,\n",
-        " 68,\n",
-        " 70,\n",
+        " 19,\n",
+        " 22,\n",
+        " 8,\n",
         " 4,\n",
-        " 185,\n",
-        " 32,\n",
         " 13,\n",
-        " 152,\n",
-        " 28,\n",
-        " 185,\n",
-        " 137,\n",
-        " 24,\n",
-        " 98,\n",
-        " 6,\n",
-        " 70,\n",
-        " 206,\n",
-        " 103,\n",
-        " 92,\n",
-        " 218,\n",
-        " 59,\n",
-        " 206,\n",
-        " 115,\n",
-        " 96,\n",
-        " 36,\n",
+        " 19,\n",
+        " 17,\n",
         " 21,\n",
-        " 144,\n",
-        " 4,\n",
-        " 36,\n",
-        " 214,\n",
-        " 137,\n",
-        " 34,\n",
-        " 51,\n",
-        " 180,\n",
-        " 233,\n",
-        " 23,\n",
-        " 148,\n",
+        " 14,\n",
+        " 14,\n",
+        " 13,\n",
+        " 4,\n",
+        " 17,\n",
+        " 7,\n",
+        " 20,\n",
+        " 0,\n",
+        " 7,\n",
+        " 17,\n",
+        " 0,\n",
+        " 21,\n",
+        " 4,\n",
+        " 17,\n",
+        " 4,\n",
+        " 4,\n",
+        " 19,\n",
+        " 18,\n",
+        " 21,\n",
+        " 18,\n",
         " 8,\n",
-        " 92,\n",
-        " 200,\n",
+        " 4,\n",
+        " 11,\n",
         " 7,\n",
-        " 16,\n",
-        " 164,\n",
-        " 68,\n",
-        " 144,\n",
-        " 132,\n",
-        " 97,\n",
+        " 11,\n",
+        " 14,\n",
         " 18,\n",
-        " 66,\n",
-        " 171,\n",
-        " 59,\n",
-        " 34,\n",
-        " 79,\n",
-        " 136,\n",
-        " 100,\n",
-        " 134,\n",
-        " 145,\n",
-        " 111,\n",
-        " 60,\n",
-        " 88,\n",
-        " 227,\n",
-        " 160,\n",
-        " 6,\n",
-        " 106,\n",
-        " 228,\n",
-        " 186,\n",
-        " 162,\n",
-        " 110,\n",
+        " 19,\n",
+        " 3,\n",
+        " 14,\n",
+        " 0,\n",
+        " 11,\n",
+        " 14,\n",
         " 24,\n",
+        " 0,\n",
+        " 4,\n",
+        " 18,\n",
+        " 12,\n",
+        " 13,\n",
+        " 13,\n",
+        " 3,\n",
+        " 8,\n",
+        " 6,\n",
+        " 13,\n",
+        " 13,\n",
         " 17,\n",
-        " 33,\n",
-        " 189,\n",
-        " 184,\n",
-        " 24,\n",
-        " 196,\n",
-        " 0,\n",
-        " 58,\n",
-        " 96,\n",
-        " 56,\n",
-        " 136,\n",
-        " 121,\n",
-        " 208,\n",
-        " 136,\n",
-        " 140,\n",
-        " 72,\n",
-        " 48,\n",
-        " 16,\n",
-        " 83,\n",
-        " 116,\n",
-        " 155,\n",
-        " 19,\n",
-        " 213,\n",
-        " 160,\n",
-        " 112,\n",
-        " 220,\n",
-        " 133,\n",
-        " 56,\n",
-        " 147,\n",
+        " 7,\n",
+        " 14,\n",
+        " 7,\n",
+        " 7,\n",
+        " 19,\n",
         " 18,\n",
-        " 26,\n",
-        " 70,\n",
-        " 146,\n",
-        " 145,\n",
-        " 138,\n",
-        " 36,\n",
-        " 49,\n",
-        " 58,\n",
-        " 145,\n",
-        " 1,\n",
-        " 151,\n",
-        " 84,\n",
-        " 49,\n",
-        " 148,\n",
-        " 123,\n",
-        " 198,\n",
-        " 137,\n",
-        " 144,\n",
-        " 13,\n",
-        " 26,\n",
-        " 38,\n",
-        " 192,\n",
-        " 1,\n",
+        " 13,\n",
         " 0,\n",
-        " 65,\n",
+        " 14,\n",
+        " 8,\n",
+        " 11,\n",
+        " 13,\n",
+        " 2,\n",
+        " 13,\n",
+        " 18,\n",
+        " 18,\n",
+        " 8,\n",
+        " 2,\n",
+        " 17,\n",
+        " 4,\n",
+        " 0,\n",
+        " 13,\n",
+        " 13,\n",
+        " 4,\n",
+        " 4,\n",
+        " 8,\n",
+        " 8,\n",
+        " 8,\n",
+        " 4,\n",
+        " 17,\n",
         " 22,\n",
-        " 71,\n",
-        " 53,\n",
-        " 177,\n",
-        " 33,\n",
+        " 19,\n",
+        " 0,\n",
+        " 13,\n",
+        " 4,\n",
+        " 18,\n",
+        " 17,\n",
+        " 21,\n",
+        " 14,\n",
         " 6,\n",
-        " 7,\n",
-        " 12,\n",
-        " 46,\n",
-        " 69,\n",
+        " 8,\n",
+        " 4,\n",
+        " 8,\n",
         " 24,\n",
-        " 69,\n",
-        " 197,\n",
-        " 211,\n",
-        " 108,\n",
-        " 231,\n",
-        " 51,\n",
-        " 34,\n",
-        " 109,\n",
-        " 138,\n",
-        " 226,\n",
-        " 130,\n",
-        " 53,\n",
-        " 168,\n",
-        " 82,\n",
-        " 241,\n",
-        " 39,\n",
-        " 26,\n",
-        " 83,\n",
-        " 18,\n",
-        " 11,\n",
-        " 135,\n",
-        " 161,\n",
-        " 245,\n",
-        " 64,\n",
-        " 235,\n",
-        " 41,\n",
-        " 49,\n",
-        " 162,\n",
-        " 34,\n",
-        " 1,\n",
-        " 36,\n",
-        " 34,\n",
-        " 114,\n",
-        " 107,\n",
-        " 72,\n",
-        " 9,\n",
-        " 162,\n",
-        " 110,\n",
-        " 100,\n",
-        " 78,\n",
         " 22,\n",
-        " 157,\n",
-        " 168,\n",
-        " 27,\n",
-        " 226,\n",
-        " 184,\n",
-        " 145,\n",
-        " 238,\n",
-        " 195,\n",
-        " 64,\n",
-        " 185,\n",
-        " 54,\n",
-        " 178,\n",
-        " 27,\n",
-        " 164,\n",
+        " 18,\n",
+        " 18,\n",
+        " 3,\n",
         " 6,\n",
-        " 146,\n",
-        " 72,\n",
-        " 153,\n",
-        " 64,\n",
-        " 70,\n",
-        " 174,\n",
-        " 102,\n",
-        " 112,\n",
-        " 193,\n",
-        " 57,\n",
-        " 144,\n",
-        " 128,\n",
-        " 68,\n",
-        " 144,\n",
-        " 40,\n",
-        " 185,\n",
-        " 211,\n",
-        " 100,\n",
-        " 152,\n",
-        " 83,\n",
-        " 130,\n",
-        " 132,\n",
-        " 106,\n",
-        " 35,\n",
-        " 35,\n",
-        " 31,\n",
-        " 13,\n",
-        " 177,\n",
-        " 16,\n",
-        " 217,\n",
-        " 144,\n",
-        " 206,\n",
-        " 26,\n",
-        " 16,\n",
-        " 178,\n",
-        " 16,\n",
-        " 115,\n",
-        " 4,\n",
-        " 90,\n",
-        " 233,\n",
-        " 68,\n",
-        " 64,\n",
-        " 1,\n",
-        " 26,\n",
-        " 57,\n",
-        " 138,\n",
-        " 147,\n",
-        " 153,\n",
-        " 71,\n",
-        " 16,\n",
-        " 144,\n",
-        " 243,\n",
-        " 97,\n",
-        " 81,\n",
-        " 55,\n",
-        " 58,\n",
-        " 35,\n",
-        " 141,\n",
-        " 16,\n",
-        " 7,\n",
-        " 96,\n",
-        " 0,\n",
-        " 107,\n",
-        " 136,\n",
-        " 69,\n",
-        " 141,\n",
-        " 200,\n",
-        " 105,\n",
-        " 233,\n",
-        " 35,\n",
-        " 34,\n",
-        " 100,\n",
+        " 15,\n",
+        " 21,\n",
+        " 14,\n",
+        " 8,\n",
+        " 0,\n",
+        " 8,\n",
+        " 18,\n",
+        " 0,\n",
+        " 14,\n",
+        " 0,\n",
+        " 4,\n",
+        " 14,\n",
+        " 0,\n",
+        " 4,\n",
         " 3,\n",
-        " 162,\n",
-        " 130,\n",
-        " 8,\n",
-        " 149,\n",
-        " 35,\n",
-        " 27,\n",
-        " 56,\n",
-        " 130,\n",
-        " 108,\n",
-        " 153,\n",
-        " 94,\n",
-        " 74,\n",
-        " 10,\n",
-        " 147,\n",
-        " 1,\n",
-        " 192,\n",
-        " 201,\n",
-        " 180,\n",
-        " 150,\n",
-        " 115,\n",
-        " 80,\n",
-        " 33,\n",
-        " 144,\n",
-        " 140,\n",
-        " 139,\n",
-        " 192,\n",
-        " 229,\n",
-        " 162,\n",
-        " 110,\n",
-        " 1,\n",
-        " 73,\n",
-        " 39,\n",
-        " 58,\n",
-        " 82,\n",
-        " 121,\n",
-        " 90,\n",
-        " 182,\n",
-        " 144,\n",
-        " 142,\n",
-        " 116,\n",
-        " 192,\n",
-        " 35,\n",
-        " 173,\n",
-        " 104,\n",
-        " 140,\n",
-        " 165,\n",
-        " 121,\n",
-        " 56,\n",
-        " 175,\n",
-        " 25,\n",
-        " 102,\n",
-        " 88,\n",
-        " 181,\n",
-        " 241,\n",
-        " 1,\n",
+        " 17,\n",
+        " 13,\n",
         " 8,\n",
-        " 12,\n",
-        " 45,\n",
-        " 205,\n",
-        " 1,\n",
-        " 193,\n",
-        " 73,\n",
-        " 182,\n",
-        " 98,\n",
-        " 108,\n",
-        " 196,\n",
-        " 16,\n",
-        " 89,\n",
-        " 110,\n",
-        " 105,\n",
-        " 11,\n",
-        " 55,\n",
-        " 2,\n",
-        " 100,\n",
-        " 21,\n",
-        " 93,\n",
-        " 97,\n",
-        " 174,\n",
-        " 213,\n",
-        " 107,\n",
-        " 72,\n",
-        " 65,\n",
-        " 205,\n",
-        " 8,\n",
-        " 114,\n",
-        " 13,\n",
-        " 50,\n",
-        " 25,\n",
-        " 147,\n",
-        " 1,\n",
-        " 200,\n",
-        " 64,\n",
-        " 76,\n",
-        " 133,\n",
-        " 0,\n",
-        " 8,\n",
-        " 248,\n",
-        " 196,\n",
-        " 81,\n",
-        " 116,\n",
-        " 142,\n",
-        " 66,\n",
-        " 70,\n",
-        " 47,\n",
-        " 2,\n",
-        " 200,\n",
-        " 52,\n",
+        " 19,\n",
         " 17,\n",
-        " 166,\n",
-        " 64,\n",
-        " 227,\n",
+        " 13,\n",
+        " 23,\n",
+        " 4,\n",
+        " 8,\n",
+        " 6,\n",
+        " 17,\n",
+        " 15,\n",
         " 18,\n",
-        " 58,\n",
-        " 135,\n",
-        " 169,\n",
-        " 37,\n",
-        " 72,\n",
-        " 187,\n",
-        " 19,\n",
-        " 108,\n",
-        " 157,\n",
-        " 36,\n",
-        " 54,\n",
-        " 136,\n",
-        " 162,\n",
-        " 28,\n",
-        " 87,\n",
-        " 196,\n",
-        " 96]"
-       ]
-      }
-     ],
-     "prompt_number": 20
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "bytes([(int(c, 2)) for c in chunks(c8b, 8)])"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 18,
+        " 18,\n",
+        " 7,\n",
+        " 0,\n",
+        " 3,\n",
+        " 7,\n",
+        " 3,\n",
+        " 19,\n",
+        " 14,\n",
+        " 8,\n",
+        " 15,\n",
+        " 0,\n",
+        " 0,\n",
+        " 19,\n",
+        " 4,\n",
+        " 23,\n",
+        " 4,\n",
+        " 13,\n",
+        " 13,\n",
+        " 4,\n",
+        " 18,\n",
+        " 0,\n",
+        " 6,\n",
+        " 17,\n",
+        " 14,\n",
+        " 1,\n",
+        " 19,\n",
+        " 11,\n",
+        " 4,\n",
+        " 18,\n",
+        " 17,\n",
+        " 13,\n",
+        " 17,\n",
+        " 14,\n",
+        " 8,\n",
+        " 17,\n",
+        " 24,\n",
+        " 15,\n",
+        " 1,\n",
+        " 6,\n",
+        " 4,\n",
+        " 3,\n",
+        " 2,\n",
+        " 11,\n",
+        " 11,\n",
+        " 8,\n",
+        " 22,\n",
+        " 0,\n",
+        " 11,\n",
+        " 0,\n",
+        " 11,\n",
+        " 4,\n",
+        " 4,\n",
+        " 13,\n",
+        " 8,\n",
+        " 6,\n",
+        " 17,\n",
+        " 17,\n",
+        " 13,\n",
+        " 22,\n",
+        " 24,\n",
+        " 17,\n",
+        " 11,\n",
+        " 8,\n",
+        " 12,\n",
+        " 11,\n",
+        " 15,\n",
+        " 18,\n",
+        " 19,\n",
+        " 14,\n",
+        " 11,\n",
+        " 4,\n",
+        " 5,\n",
+        " 19,\n",
+        " 17,\n",
+        " 3,\n",
+        " 12,\n",
+        " 20,\n",
+        " 0,\n",
+        " 17,\n",
+        " 8,\n",
+        " 4,\n",
+        " 4,\n",
+        " 4,\n",
+        " 8,\n",
+        " 8,\n",
+        " 0,\n",
+        " 14,\n",
+        " 11,\n",
+        " 13,\n",
+        " 4,\n",
+        " 22,\n",
+        " 18,\n",
+        " 0,\n",
+        " 14,\n",
+        " 7,\n",
+        " 17,\n",
+        " 19,\n",
+        " 11,\n",
+        " 18,\n",
+        " 19,\n",
+        " 14,\n",
+        " 1,\n",
+        " 4,\n",
+        " 19,\n",
+        " 13,\n",
+        " 18,\n",
+        " 11,\n",
+        " 21,\n",
+        " 5,\n",
+        " 8,\n",
+        " 21,\n",
+        " 3,\n",
+        " 14,\n",
+        " 21,\n",
+        " 19,\n",
+        " 15,\n",
+        " 14,\n",
+        " 0,\n",
+        " 4,\n",
+        " 4,\n",
+        " 8,\n",
+        " 18,\n",
+        " 2,\n",
+        " 8,\n",
+        " 14,\n",
+        " 7,\n",
+        " 8,\n",
+        " 15,\n",
+        " 18,\n",
+        " 4,\n",
+        " 21,\n",
+        " 4,\n",
+        " 4,\n",
+        " 3,\n",
+        " 19,\n",
+        " 4,\n",
+        " 22,\n",
+        " 5,\n",
+        " 0,\n",
+        " 17,\n",
+        " 13,\n",
+        " 7,\n",
+        " 4,\n",
+        " 1,\n",
+        " 11,\n",
+        " 4,\n",
+        " 0,\n",
+        " 14,\n",
+        " 19,\n",
+        " 14,\n",
+        " 7,\n",
+        " 19,\n",
+        " 19,\n",
+        " 19,\n",
+        " 4,\n",
+        " 15,\n",
+        " 13,\n",
+        " 2,\n",
+        " 10,\n",
+        " 0,\n",
+        " 14,\n",
+        " 13,\n",
+        " 7,\n",
+        " 22,\n",
+        " 4,\n",
+        " 19,\n",
+        " 12,\n",
+        " 21,\n",
+        " 24,\n",
+        " 15,\n",
+        " 17,\n",
+        " 17,\n",
+        " 4,\n",
+        " 14,\n",
+        " 13,\n",
+        " 13,\n",
+        " 0,\n",
+        " 18,\n",
+        " 6,\n",
+        " 3,\n",
+        " 4,\n",
+        " 3,\n",
+        " 14,\n",
+        " 4,\n",
+        " 4,\n",
+        " 4,\n",
+        " 14,\n",
+        " 0,\n",
+        " 0,\n",
+        " 12,\n",
+        " 19,\n",
+        " 2,\n",
+        " 8,\n",
+        " 2,\n",
+        " 19,\n",
+        " 19,\n",
+        " 8,\n",
+        " 5,\n",
+        " 13,\n",
+        " 0,\n",
+        " 3,\n",
+        " 17,\n",
+        " 4,\n",
+        " 18,\n",
+        " 17,\n",
+        " 19,\n",
+        " 18,\n",
+        " 4,\n",
+        " 17,\n",
+        " 14,\n",
+        " 18,\n",
+        " 4,\n",
+        " 19,\n",
+        " 17,\n",
+        " 7,\n",
+        " 2,\n",
+        " 8,\n",
+        " 2,\n",
+        " 19,\n",
+        " 15,\n",
+        " 18,\n",
+        " 0,\n",
+        " 0,\n",
+        " 4,\n",
+        " 7,\n",
+        " 11,\n",
+        " 3,\n",
+        " 7,\n",
+        " 18,\n",
+        " 5,\n",
+        " 23,\n",
+        " 18,\n",
+        " 14,\n",
+        " 0,\n",
+        " 14,\n",
+        " 19,\n",
+        " 2,\n",
+        " 19,\n",
+        " 1,\n",
+        " 1,\n",
+        " 18,\n",
+        " 14,\n",
+        " 4,\n",
+        " 8,\n",
+        " 17,\n",
+        " 13,\n",
+        " 18,\n",
+        " 0,\n",
+        " 3,\n",
+        " 11,\n",
+        " 24,\n",
+        " 19,\n",
+        " 17,\n",
+        " 17,\n",
+        " 20,\n",
+        " 13,\n",
+        " 17,\n",
+        " 2,\n",
+        " 4,\n",
+        " 15,\n",
+        " 19,\n",
+        " 19,\n",
+        " 7,\n",
+        " 17,\n",
+        " 4,\n",
+        " 20,\n",
+        " 7,\n",
+        " 13,\n",
+        " 10,\n",
+        " 19,\n",
+        " 0,\n",
+        " 2,\n",
+        " 4,\n",
+        " 2,\n",
+        " 4,\n",
+        " 4,\n",
+        " 11,\n",
+        " 17,\n",
+        " 22,\n",
+        " 13,\n",
+        " 8,\n",
+        " 17,\n",
+        " 4,\n",
+        " 4,\n",
+        " 4,\n",
+        " 0,\n",
+        " 4,\n",
+        " 18,\n",
+        " 4,\n",
+        " 4,\n",
+        " 4,\n",
+        " 8,\n",
+        " 3,\n",
+        " 8,\n",
+        " 18,\n",
+        " 14,\n",
+        " 6,\n",
+        " 2,\n",
+        " 4,\n",
+        " 14,\n",
+        " 12,\n",
+        " 13,\n",
+        " 17,\n",
+        " 19,\n",
+        " 4,\n",
+        " 9,\n",
+        " 7,\n",
+        " 0,\n",
+        " 6,\n",
+        " 0,\n",
+        " 1,\n",
+        " 18,\n",
+        " 4,\n",
+        " 13,\n",
+        " 8,\n",
+        " 19,\n",
+        " 11,\n",
+        " 22,\n",
+        " 19,\n",
+        " 17,\n",
+        " 13,\n",
+        " 1,\n",
+        " 12,\n",
+        " 8,\n",
+        " 4,\n",
+        " 11,\n",
+        " 18,\n",
+        " 0,\n",
+        " 17,\n",
+        " 4,\n",
+        " 19,\n",
+        " 4,\n",
+        " 18,\n",
+        " 17,\n",
+        " 13,\n",
+        " 6,\n",
+        " 18,\n",
+        " 13,\n",
+        " 7,\n",
+        " 4,\n",
+        " 1,\n",
+        " 8,\n",
+        " 14,\n",
+        " 18,\n",
+        " 3,\n",
+        " 8,\n",
+        " 4,\n",
+        " 13,\n",
+        " 0,\n",
+        " 5,\n",
+        " 11,\n",
+        " 4,\n",
+        " 8,\n",
+        " 18,\n",
+        " 0,\n",
+        " 7,\n",
+        " 14,\n",
+        " 2,\n",
+        " 8,\n",
+        " 5,\n",
+        " 4,\n",
+        " 21,\n",
+        " 12,\n",
+        " 5,\n",
+        " 0,\n",
+        " 19,\n",
+        " 0,\n",
+        " 13,\n",
+        " 0,\n",
+        " 19,\n",
+        " 17,\n",
+        " 13,\n",
+        " 8,\n",
+        " 0,\n",
+        " 6,\n",
+        " 13,\n",
+        " 7,\n",
+        " 0,\n",
+        " 19,\n",
+        " 13,\n",
+        " 12,\n",
+        " 8,\n",
+        " 1,\n",
+        " 13,\n",
+        " 8,\n",
+        " 20,\n",
+        " 5,\n",
+        " 4,\n",
+        " 13,\n",
+        " 17,\n",
+        " 19,\n",
+        " 14,\n",
+        " 19,\n",
+        " 19,\n",
+        " 17,\n",
+        " 13,\n",
+        " 24,\n",
+        " 15,\n",
+        " 0,\n",
+        " 8,\n",
+        " 3,\n",
+        " 24,\n",
+        " 8,\n",
+        " 4,\n",
+        " 6,\n",
+        " 3,\n",
+        " 13,\n",
+        " 12,\n",
+        " 4,\n",
+        " 17,\n",
+        " 7,\n",
+        " 7,\n",
+        " 8,\n",
+        " 14,\n",
+        " 19,\n",
+        " 17,\n",
+        " 4,\n",
+        " 19,\n",
+        " 2,\n",
+        " 4,\n",
+        " 18,\n",
+        " 18,\n",
+        " 4,\n",
+        " 8,\n",
+        " 11,\n",
+        " 3,\n",
+        " 17,\n",
+        " 1,\n",
+        " 2,\n",
+        " 4,\n",
+        " 15,\n",
+        " 17,\n",
+        " 8,\n",
+        " 6,\n",
+        " 0,\n",
+        " 4,\n",
+        " 18,\n",
+        " 14,\n",
+        " 0,\n",
+        " 3,\n",
+        " 11,\n",
+        " 19,\n",
+        " 0,\n",
+        " 7,\n",
+        " 8,\n",
+        " 4,\n",
+        " 21,\n",
+        " 4,\n",
+        " 1,\n",
+        " 17,\n",
+        " 2,\n",
+        " 4,\n",
+        " 13,\n",
+        " 11,\n",
+        " 4,\n",
+        " 21,\n",
+        " 0,\n",
+        " 18,\n",
+        " 0,\n",
+        " 3,\n",
+        " 13,\n",
+        " 13,\n",
+        " 19,\n",
+        " 7,\n",
+        " 13,\n",
+        " 4,\n",
+        " 8,\n",
+        " 19,\n",
+        " 4,\n",
+        " 8,\n",
+        " 8,\n",
+        " 18,\n",
+        " 0,\n",
+        " 7,\n",
+        " 20,\n",
+        " 7,\n",
+        " 7,\n",
+        " 20,\n",
+        " 0,\n",
+        " 12,\n",
+        " 14,\n",
+        " 13,\n",
+        " 4,\n",
+        " 5,\n",
+        " 24,\n",
+        " 7,\n",
+        " 11,\n",
+        " 14,\n",
+        " 13,\n",
+        " 22,\n",
+        " 7,\n",
+        " 0,\n",
+        " 4,\n",
+        " 4,\n",
+        " 4,\n",
+        " 4,\n",
+        " 14,\n",
+        " 18,\n",
+        " 13,\n",
+        " 4,\n",
+        " 4,\n",
+        " 24,\n",
+        " 0,\n",
+        " 13,\n",
+        " 4,\n",
+        " 8,\n",
+        " 18,\n",
+        " 4,\n",
+        " 19,\n",
+        " 14,\n",
+        " 6,\n",
+        " 24,\n",
+        " 8,\n",
+        " 19,\n",
+        " 4,\n",
+        " 17,\n",
+        " 11,\n",
+        " 8,\n",
+        " 7,\n",
+        " 19,\n",
+        " 2,\n",
+        " 12,\n",
+        " 8,\n",
+        " 14,\n",
+        " 8,\n",
+        " 17,\n",
+        " 0,\n",
+        " 17,\n",
+        " 5,\n",
+        " 3,\n",
+        " 14,\n",
+        " 4,\n",
+        " 19,\n",
+        " 13,\n",
+        " 8,\n",
+        " 7,\n",
+        " 19,\n",
+        " 13,\n",
+        " 4,\n",
+        " 7,\n",
+        " 8,\n",
+        " 8,\n",
+        " 10,\n",
+        " 0,\n",
+        " 12,\n",
+        " 17,\n",
+        " 3,\n",
+        " 12,\n",
+        " 13,\n",
+        " 0,\n",
+        " 3,\n",
+        " 0,\n",
+        " 13,\n",
+        " 0,\n",
+        " 14,\n",
+        " 3,\n",
+        " 18,\n",
+        " 4,\n",
+        " 18,\n",
+        " 4,\n",
+        " 8,\n",
+        " 24,\n",
+        " 2,\n",
+        " 11,\n",
+        " 18,\n",
+        " 8,\n",
+        " 0,\n",
+        " 13,\n",
+        " 19,\n",
+        " 0,\n",
+        " 14,\n",
+        " 11,\n",
+        " 19,\n",
+        " 2,\n",
+        " 8,\n",
+        " 24,\n",
+        " 12,\n",
+        " 8,\n",
+        " 3,\n",
+        " 4,\n",
+        " 13,\n",
+        " 19,\n",
+        " 19,\n",
+        " 7,\n",
+        " 11,\n",
+        " 19,\n",
+        " 13,\n",
+        " 3,\n",
+        " 23,\n",
+        " 19,\n",
+        " 19,\n",
+        " 19,\n",
+        " 12,\n",
+        " 0,\n",
+        " 18,\n",
+        " 1,\n",
+        " 11,\n",
+        " 4,\n",
+        " 0,\n",
+        " 4,\n",
+        " 4,\n",
+        " 19,\n",
+        " 11,\n",
+        " 8,\n",
+        " 18,\n",
+        " 8,\n",
+        " 17,\n",
+        " 19,\n",
+        " 22,\n",
+        " 19,\n",
+        " 20,\n",
+        " 17,\n",
+        " 15,\n",
+        " 5,\n",
+        " 0,\n",
+        " 8,\n",
+        " 11,\n",
+        " 19,\n",
+        " 4,\n",
+        " 0,\n",
+        " 14,\n",
+        " 4,\n",
+        " 5,\n",
+        " 4,\n",
+        " 8,\n",
+        " 18,\n",
+        " 8,\n",
+        " 8,\n",
+        " 8,\n",
+        " 24,\n",
+        " 8,\n",
+        " 18,\n",
+        " 8,\n",
+        " 10,\n",
+        " 21,\n",
+        " 19,\n",
+        " 22,\n",
+        " 8,\n",
+        " 18,\n",
+        " 15,\n",
+        " 17,\n",
+        " 1,\n",
+        " 18,\n",
+        " 8,\n",
+        " 13,\n",
+        " 4,\n",
+        " 11,\n",
+        " 15,\n",
+        " 7,\n",
+        " 17,\n",
+        " 12,\n",
+        " 14,\n",
+        " 7,\n",
+        " 8,\n",
+        " 0,\n",
+        " 6,\n",
+        " 13,\n",
+        " 11,\n",
+        " 18,\n",
+        " 11,\n",
+        " 21,\n",
+        " 8,\n",
+        " 19,\n",
+        " 14,\n",
+        " 3,\n",
+        " 0,\n",
+        " 8,\n",
+        " 18,\n",
+        " 3,\n",
+        " 15,\n",
+        " 13,\n",
+        " 24,\n",
+        " 3,\n",
+        " 3,\n",
+        " 2,\n",
+        " 0,\n",
+        " 0,\n",
+        " 14,\n",
+        " 19,\n",
+        " 0,\n",
+        " 7,\n",
+        " 2,\n",
+        " 4,\n",
+        " 7,\n",
+        " 19,\n",
+        " 20,\n",
+        " 4,\n",
+        " 8,\n",
+        " 17,\n",
+        " 17,\n",
+        " 4,\n",
+        " 3,\n",
+        " 0,\n",
+        " 4,\n",
+        " 2,\n",
+        " 19,\n",
+        " 14,\n",
+        " 18,\n",
+        " 13,\n",
+        " 17,\n",
+        " 7,\n",
+        " 21,\n",
+        " 13,\n",
+        " 0,\n",
+        " 14,\n",
+        " 3,\n",
+        " 14,\n",
+        " 8,\n",
+        " 10,\n",
+        " 14,\n",
+        " 4,\n",
+        " 19,\n",
+        " 2,\n",
+        " 8,\n",
+        " 13,\n",
+        " 4,\n",
+        " 13,\n",
+        " 4,\n",
+        " 20,\n",
+        " 17,\n",
+        " 17,\n",
+        " 8,\n",
+        " 18,\n",
+        " 3,\n",
+        " 2,\n",
+        " 14,\n",
+        " 20,\n",
+        " 17,\n",
+        " 0,\n",
+        " 6,\n",
+        " 11,\n",
+        " 21,\n",
+        " 8,\n",
+        " 12,\n",
+        " 12,\n",
+        " 20,\n",
+        " 15,\n",
+        " 15,\n",
+        " 3,\n",
+        " 8,\n",
+        " 19,\n",
+        " 4,\n",
+        " 0,\n",
+        " 13,\n",
+        " 3,\n",
+        " 8,\n",
+        " 19,\n",
+        " 12,\n",
+        " 0,\n",
+        " 0,\n",
+        " 8,\n",
+        " 0,\n",
+        " 8,\n",
+        " 4,\n",
+        " 11,\n",
+        " 4,\n",
+        " 14,\n",
+        " 13,\n",
+        " 13,\n",
+        " 17,\n",
+        " 4,\n",
+        " 4,\n",
+        " 3,\n",
+        " 0,\n",
+        " 14,\n",
+        " 3,\n",
+        " 1,\n",
+        " 14,\n",
+        " 8,\n",
+        " 20,\n",
+        " 12,\n",
+        " 4,\n",
+        " 11,\n",
+        " 17,\n",
+        " 14,\n",
+        " 19,\n",
+        " 13,\n",
+        " 19,\n",
+        " 19,\n",
+        " 19,\n",
+        " 6,\n",
+        " 8,\n",
+        " 19,\n",
+        " 13,\n",
+        " ...]"
+       ]
+      }
+     ],
+     "prompt_number": 9
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "max([(int(c, 2)) for c in chunks(c8b, 5)])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 10,
+       "text": [
+        "24"
+       ]
+      }
+     ],
+     "prompt_number": 10
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "max([chr(int(c, 2) + ord('a')) for c in chunks(c8b, 5)])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 11,
+       "text": [
+        "'y'"
+       ]
+      }
+     ],
+     "prompt_number": 11
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def cadenus_letter(n, doubled='v'):\n",
+      "    letter = chr(n + ord('a'))\n",
+      "    if letter > doubled:\n",
+      "        letter = chr(n + ord('a') + 1)\n",
+      "    return letter"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 12
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "c8bl = ''.join([cadenus_letter(int(c, 2), doubled='z') for c in chunks(c8b, 5)])\n",
+      "c8bl"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 13,
+       "text": [
+        "'afcaeuottacthrioletcserthshtrahkyorpfrgeoadppjnglternefeofiortsddoeeumscruernfetlaafstwientrvoonerhuahravereetsvsielhlostdoaloyaesmnndignnrhohhtsnaoilncnssicreanneeiiierwtanesrvogieiywssdgpvoiaisaoaeoaedrnitrnxeigrpsshadhdtoipaatexennesagrobtlesrnroirypbgedclliwalaleenigrrnwyrlimlpstoleftrdmuarieeeiiaolnewsaohrtlstobetnslvfivdovtpoaeeisciohipseveedtewfarnhebleaotohtttepnckaonhwetmvyprreonnasgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfxsoaotctbbsoeirnsadlytrrunrceptthreuhnktaceceelrwnireeeaeseeeidisogceomnrtejhagabsenitlwtrnbmielsaretesrngsnhebiosdienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnypaidyiegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlevasadnnthneiteiisahuhhuamonefyhlonwhaeeeeosneeyaneisetogyiterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseiyclsiantaoltciymidentthltndxtttmasbleaeetlisirtwturpfailteaoefeisiiiyisikvtwisprbsinelphrmohiagnlslvitodaisdpnyddcaaotahcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmuppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienniklysogstcifypipvidvssmnceiasiitsnneatitomrhbnhnidprlrepoynalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghynweintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaoyaanoeeldoinhusgiteaoriecevemntratmtfpeucutahamtnewonicdeemrpaolitoafesoosspfnlneeootachllirssxsofpdftfrnpraeeaylonahautntcntcbawloneftoatecvowdlwvnneedtiioigtegmtaheeatefaaeprrcrosheerrpalediengidrreouhvesuroytnsosinuiuiofprda'"
+       ]
+      }
+     ],
+     "prompt_number": 13
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "min(c8bl), max(c8bl)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 14,
+       "text": [
+        "('a', 'y')"
+       ]
+      }
+     ],
+     "prompt_number": 14
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "len(c8bl), len(c8bl) / 25"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 15,
+       "text": [
+        "(1400, 56.0)"
+       ]
+      }
+     ],
+     "prompt_number": 15
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "freqs_8b = pd.Series(collections.Counter([l.lower() for l in c8bl if l in string.ascii_letters]))\n",
+      "freqs_8b.plot(kind='bar')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 16,
+       "text": [
+        "<matplotlib.axes.AxesSubplot at 0x7f25d357dc18>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7f25d357d278>"
+       ]
+      }
+     ],
+     "prompt_number": 16
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "freqs = pd.Series(english_counts)\n",
+      "freqs.plot(kind='bar')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 17,
+       "text": [
+        "<matplotlib.axes.AxesSubplot at 0x7f25d351a940>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7f25d34b3e48>"
+       ]
+      }
+     ],
+     "prompt_number": 17
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "rows = chunks(c8bl, len(c8bl) // 25)\n",
+      "rows"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 18,
+       "text": [
+        "['afcaeuottacthrioletcserthshtrahkyorpfrgeoadppjnglternefe',\n",
+        " 'ofiortsddoeeumscruernfetlaafstwientrvoonerhuahravereetsv',\n",
+        " 'sielhlostdoaloyaesmnndignnrhohhtsnaoilncnssicreanneeiiie',\n",
+        " 'rwtanesrvogieiywssdgpvoiaisaoaeoaedrnitrnxeigrpsshadhdto',\n",
+        " 'ipaatexennesagrobtlesrnroirypbgedclliwalaleenigrrnwyrlim',\n",
+        " 'lpstoleftrdmuarieeeiiaolnewsaohrtlstobetnslvfivdovtpoaee',\n",
+        " 'isciohipseveedtewfarnhebleaotohtttepnckaonhwetmvyprreonn',\n",
+        " 'asgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfxs',\n",
+        " 'oaotctbbsoeirnsadlytrrunrceptthreuhnktaceceelrwnireeeaes',\n",
+        " 'eeeidisogceomnrtejhagabsenitlwtrnbmielsaretesrngsnhebios',\n",
+        " 'dienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnypai',\n",
+        " 'dyiegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlev',\n",
+        " 'asadnnthneiteiisahuhhuamonefyhlonwhaeeeeosneeyaneisetogy',\n",
+        " 'iterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseiyclsian',\n",
+        " 'taoltciymidentthltndxtttmasbleaeetlisirtwturpfailteaoefe',\n",
+        " 'isiiiyisikvtwisprbsinelphrmohiagnlslvitodaisdpnyddcaaota',\n",
+        " 'hcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmu',\n",
+        " 'ppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienni',\n",
+        " 'klysogstcifypipvidvssmnceiasiitsnneatitomrhbnhnidprlrepo',\n",
+        " 'ynalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghyn',\n",
+        " 'weintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaoyaa',\n",
+        " 'noeeldoinhusgiteaoriecevemntratmtfpeucutahamtnewonicdeem',\n",
+        " 'rpaolitoafesoosspfnlneeootachllirssxsofpdftfrnpraeeaylon',\n",
+        " 'ahautntcntcbawloneftoatecvowdlwvnneedtiioigtegmtaheeatef',\n",
+        " 'aaeprrcrosheerrpalediengidrreouhvesuroytnsosinuiuiofprda']"
+       ]
+      }
+     ],
+     "prompt_number": 18
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "chunks(''.join([l if l in 'phase' else '.' for l in c8bl]), 56)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 19,
+       "text": [
+        "['a..ae....a..h....e..se..hsh..ah....p...e.a.pp.....e..e.e',\n",
+        " '......s...ee..s...e...e..aa.s...e.......e.h.ah.a.e.ee.s.',\n",
+        " 's.e.h..s...a...aes.........h.hh.s.a......ss...ea..ee...e',\n",
+        " '...a.es.....e...ss..p...a.sa.ae.ae........e...pssha.h...',\n",
+        " '.paa.e.e..esa......es.......p..e......a.a.ee............',\n",
+        " '.ps...e......a..eee..a...e.sa.h...s...e..s.........p.aee',\n",
+        " '.s...h.pse.ee..e..a..he..ea...h...ep...a..h.e....p..e...',\n",
+        " 'as..e..eee.aa..........a..es..se..se..h....psaaeh..hs..s',\n",
+        " '.a......s.e...sa..........ep..h.e.h...a.e.ee......eeeaes',\n",
+        " 'eee...s...e.....e.ha.a.se...........e.sa.e.es...s.he...s',\n",
+        " '..e.a..e.sah....e...a.a.a....a..ha.........e.........pa.',\n",
+        " '...e....e.hh....e..esse......ep...aes.a...ah.e.e...e..e.',\n",
+        " 'asa....h.e..e..sah.hh.a...e..h....haeeee.s.ee.a.e.se....',\n",
+        " '..e...h.......a....e...h..eh...a.....a.a.a..sese....s.a.',\n",
+        " '.a.........e...h.........as..eaee...s.......p.a...ea.e.e',\n",
+        " '.s.....s......sp..s..e.ph...h.a...s......a.s.p.....aa..a',\n",
+        " 'h.eh..e...e.ae...s..h..a......e....e.e....s.....a.......',\n",
+        " 'pp...ea.....aa.a.e.e....ee.a.......e................e...',\n",
+        " '...s..s.....p.p....ss...e.as...s..ea......h..h...p...ep.',\n",
+        " '..a.s..s..sa.es...ae......a..eea.s.......s..ha.e...s.h..',\n",
+        " '.e...e......ee..a...s..aae...........eh............a..aa',\n",
+        " '..ee.....h.s...ea...e.e.e....a....pe....aha...e......ee.',\n",
+        " '.pa.....a.es..ssp....ee...a.h....ss.s..p......p.aeea....',\n",
+        " 'aha.........a....e...a.e..........ee........e...aheea.e.',\n",
+        " 'aaep.....shee..pa.e..e......e..h.es......s.s........p..a']"
+       ]
+      }
+     ],
+     "prompt_number": 19
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "columns = [''.join(c) for c in zip(*rows)]\n",
+      "columns"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 20,
+       "text": [
+        "['aosriliaoeddaitihpkywnraa',\n",
+        " 'ffiwppssaeiystascplneopha',\n",
+        " 'cietascgoeeiaeoiedyaieaae',\n",
+        " 'aolaatidtinedrlihislneoup',\n",
+        " 'erhntooecdagnltittostlltr',\n",
+        " 'utleelhdtifdnicyuegnedinr',\n",
+        " 'ososxeiobslnthiieasvgottc',\n",
+        " 'tdsrefpeboemhtysintsoiocr',\n",
+        " 'tdtvntsesgiencmirdcddnano',\n",
+        " 'aodonreeocsremikriioihfts',\n",
+        " 'ceogedvoeeahiidvetfsiuech',\n",
+        " 'teaismeaiohhtoetdmyalssbe',\n",
+        " 'huleauearmoieinwaapnegoae',\n",
+        " 'rmoigadmnncoirtieaieeiowr',\n",
+        " 'isyyrrttsritiatscipsdtslr',\n",
+        " 'ocawoiecatfrsrhptavitesop',\n",
+        " 'lresbewideeeaflroiitaapna',\n",
+        " 'eusstefcljvthdtbsedfrofel',\n",
+        " 'temdleatyhmcuonsnlvanrnfe',\n",
+        " 'crngeirttafehedireseoiltd',\n",
+        " 'snnpsinirgashtxnhosnsenoi',\n",
+        " 'efdvrahfratsuntevnmlrceae',\n",
+        " 'reionoenubaeaitlnnntceetn',\n",
+        " 'ttgirlbansnimhtparcgavoeg',\n",
+        " 'hlnaonldrealotmhoeeoaeoci',\n",
+        " 'saniieercntdnnardeidemtvd',\n",
+        " 'harsrwaeeirreesmodaannaor',\n",
+        " 'tfhaysosptnbfhboiastdtcwr',\n",
+        " 'rsoopatrtlicyilhkoittrhde',\n",
+        " 'athaboottwaehieiodiecallo',\n",
+        " 'hwheghhshtgplkaaebteutlwu',\n",
+        " 'kitoerterrnroaegtosatmivh',\n",
+        " 'yesadttrenhinmencinittrnv',\n",
+        " 'onnecltoubagwrtliunsffsne',\n",
+        " 'rtadlseshmtahdlsnmeidpses',\n",
+        " 'prorltpenineamileeacrexeu',\n",
+        " 'fviniontkemsensvnltrbusdr',\n",
+        " 'roliwbcrtlioeaiierioecoto',\n",
+        " 'gontaekhasbaedrtuotohufiy',\n",
+        " 'encrltaccandeatortotttpit',\n",
+        " 'oennanoierilonwdrnmmmadon',\n",
+        " 'arsxlsncceutsataitrsfhfis',\n",
+        " 'dhseelhtetfanouisthmiatgo',\n",
+        " 'puiievwpeeehedrsdtbftmfts',\n",
+        " 'pacgnfeslsniespdcgnhotrei',\n",
+        " 'jhrriitarrreyefpoihaonngn',\n",
+        " 'nrepgvmawntvasanutnurepmu',\n",
+        " 'gaasrdvengoeneiyrniedwrti',\n",
+        " 'lvnsroyhistbeildardnroaau',\n",
+        " 'tenhnvplrntriytdglpiunehi',\n",
+        " 'ereawtrdehrcsceclrrriieeo',\n",
+        " 'reedyprheeneelaavilsacaef',\n",
+        " 'neihroesebyntsoaiergodyap',\n",
+        " 'etidlaofaiploieomnehyeltr',\n",
+        " 'fsitienxeoaegaftmnpyaeoed',\n",
+        " 'eveomensssivyneauionamnfa']"
+       ]
+      }
+     ],
+     "prompt_number": 20
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "letter_positions = {letter: [(r, c) for r, row in enumerate(rows) for c, char in enumerate(row) if char == letter] \n",
+      "                    for letter in deduplicate('phaseseven')}\n",
+      "letter_positions"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 21,
+       "text": [
+        "{'a': [(0, 0),\n",
+        "  (0, 3),\n",
+        "  (0, 9),\n",
+        "  (0, 29),\n",
+        "  (0, 41),\n",
+        "  (1, 25),\n",
+        "  (1, 26),\n",
+        "  (1, 44),\n",
+        "  (1, 47),\n",
+        "  (2, 11),\n",
+        "  (2, 15),\n",
+        "  (2, 34),\n",
+        "  (2, 47),\n",
+        "  (3, 3),\n",
+        "  (3, 24),\n",
+        "  (3, 27),\n",
+        "  (3, 29),\n",
+        "  (3, 32),\n",
+        "  (3, 50),\n",
+        "  (4, 2),\n",
+        "  (4, 3),\n",
+        "  (4, 12),\n",
+        "  (4, 38),\n",
+        "  (4, 40),\n",
+        "  (5, 13),\n",
+        "  (5, 21),\n",
+        "  (5, 28),\n",
+        "  (5, 53),\n",
+        "  (6, 18),\n",
+        "  (6, 26),\n",
+        "  (6, 39),\n",
+        "  (7, 0),\n",
+        "  (7, 11),\n",
+        "  (7, 12),\n",
+        "  (7, 23),\n",
+        "  (7, 45),\n",
+        "  (7, 46),\n",
+        "  (8, 1),\n",
+        "  (8, 15),\n",
+        "  (8, 38),\n",
+        "  (8, 53),\n",
+        "  (9, 19),\n",
+        "  (9, 21),\n",
+        "  (9, 39),\n",
+        "  (10, 4),\n",
+        "  (10, 10),\n",
+        "  (10, 20),\n",
+        "  (10, 22),\n",
+        "  (10, 24),\n",
+        "  (10, 29),\n",
+        "  (10, 33),\n",
+        "  (10, 54),\n",
+        "  (11, 34),\n",
+        "  (11, 38),\n",
+        "  (11, 42),\n",
+        "  (12, 0),\n",
+        "  (12, 2),\n",
+        "  (12, 16),\n",
+        "  (12, 22),\n",
+        "  (12, 35),\n",
+        "  (12, 46),\n",
+        "  (13, 14),\n",
+        "  (13, 31),\n",
+        "  (13, 37),\n",
+        "  (13, 39),\n",
+        "  (13, 41),\n",
+        "  (13, 54),\n",
+        "  (14, 1),\n",
+        "  (14, 25),\n",
+        "  (14, 30),\n",
+        "  (14, 46),\n",
+        "  (14, 51),\n",
+        "  (15, 30),\n",
+        "  (15, 41),\n",
+        "  (15, 51),\n",
+        "  (15, 52),\n",
+        "  (15, 55),\n",
+        "  (16, 12),\n",
+        "  (16, 23),\n",
+        "  (16, 48),\n",
+        "  (17, 6),\n",
+        "  (17, 12),\n",
+        "  (17, 13),\n",
+        "  (17, 15),\n",
+        "  (17, 27),\n",
+        "  (18, 26),\n",
+        "  (18, 35),\n",
+        "  (19, 2),\n",
+        "  (19, 11),\n",
+        "  (19, 18),\n",
+        "  (19, 26),\n",
+        "  (19, 31),\n",
+        "  (19, 45),\n",
+        "  (20, 16),\n",
+        "  (20, 23),\n",
+        "  (20, 24),\n",
+        "  (20, 51),\n",
+        "  (20, 54),\n",
+        "  (20, 55),\n",
+        "  (21, 16),\n",
+        "  (21, 29),\n",
+        "  (21, 40),\n",
+        "  (21, 42),\n",
+        "  (22, 2),\n",
+        "  (22, 8),\n",
+        "  (22, 26),\n",
+        "  (22, 48),\n",
+        "  (22, 51),\n",
+        "  (23, 0),\n",
+        "  (23, 2),\n",
+        "  (23, 12),\n",
+        "  (23, 21),\n",
+        "  (23, 48),\n",
+        "  (23, 52),\n",
+        "  (24, 0),\n",
+        "  (24, 1),\n",
+        "  (24, 16),\n",
+        "  (24, 55)],\n",
+        " 'n': [(0, 46),\n",
+        "  (0, 52),\n",
+        "  (1, 20),\n",
+        "  (1, 33),\n",
+        "  (1, 39),\n",
+        "  (2, 19),\n",
+        "  (2, 20),\n",
+        "  (2, 24),\n",
+        "  (2, 25),\n",
+        "  (2, 33),\n",
+        "  (2, 38),\n",
+        "  (2, 40),\n",
+        "  (2, 48),\n",
+        "  (2, 49),\n",
+        "  (3, 4),\n",
+        "  (3, 36),\n",
+        "  (3, 40),\n",
+        "  (4, 8),\n",
+        "  (4, 9),\n",
+        "  (4, 22),\n",
+        "  (4, 44),\n",
+        "  (4, 49),\n",
+        "  (5, 24),\n",
+        "  (5, 40),\n",
+        "  (6, 20),\n",
+        "  (6, 36),\n",
+        "  (6, 41),\n",
+        "  (6, 54),\n",
+        "  (6, 55),\n",
+        "  (7, 22),\n",
+        "  (8, 13),\n",
+        "  (8, 23),\n",
+        "  (8, 35),\n",
+        "  (8, 47),\n",
+        "  (9, 13),\n",
+        "  (9, 25),\n",
+        "  (9, 32),\n",
+        "  (9, 46),\n",
+        "  (9, 49),\n",
+        "  (10, 3),\n",
+        "  (10, 23),\n",
+        "  (10, 27),\n",
+        "  (10, 31),\n",
+        "  (10, 35),\n",
+        "  (10, 39),\n",
+        "  (10, 44),\n",
+        "  (10, 51),\n",
+        "  (11, 6),\n",
+        "  (11, 52),\n",
+        "  (12, 4),\n",
+        "  (12, 5),\n",
+        "  (12, 8),\n",
+        "  (12, 25),\n",
+        "  (12, 32),\n",
+        "  (12, 42),\n",
+        "  (12, 47),\n",
+        "  (13, 21),\n",
+        "  (13, 25),\n",
+        "  (13, 36),\n",
+        "  (13, 40),\n",
+        "  (13, 55),\n",
+        "  (14, 12),\n",
+        "  (14, 18),\n",
+        "  (15, 20),\n",
+        "  (15, 32),\n",
+        "  (15, 46),\n",
+        "  (16, 18),\n",
+        "  (16, 22),\n",
+        "  (16, 34),\n",
+        "  (16, 36),\n",
+        "  (17, 7),\n",
+        "  (17, 21),\n",
+        "  (17, 22),\n",
+        "  (17, 40),\n",
+        "  (17, 47),\n",
+        "  (17, 53),\n",
+        "  (17, 54),\n",
+        "  (18, 22),\n",
+        "  (18, 32),\n",
+        "  (18, 33),\n",
+        "  (18, 44),\n",
+        "  (18, 46),\n",
+        "  (19, 1),\n",
+        "  (19, 5),\n",
+        "  (19, 12),\n",
+        "  (19, 20),\n",
+        "  (19, 48),\n",
+        "  (19, 55),\n",
+        "  (20, 3),\n",
+        "  (20, 18),\n",
+        "  (20, 26),\n",
+        "  (21, 0),\n",
+        "  (21, 8),\n",
+        "  (21, 26),\n",
+        "  (21, 45),\n",
+        "  (21, 49),\n",
+        "  (22, 18),\n",
+        "  (22, 20),\n",
+        "  (22, 45),\n",
+        "  (22, 55),\n",
+        "  (23, 5),\n",
+        "  (23, 8),\n",
+        "  (23, 16),\n",
+        "  (23, 32),\n",
+        "  (23, 33),\n",
+        "  (24, 22),\n",
+        "  (24, 40),\n",
+        "  (24, 45)],\n",
+        " 's': [(0, 20),\n",
+        "  (0, 25),\n",
+        "  (1, 6),\n",
+        "  (1, 14),\n",
+        "  (1, 28),\n",
+        "  (1, 54),\n",
+        "  (2, 0),\n",
+        "  (2, 7),\n",
+        "  (2, 17),\n",
+        "  (2, 32),\n",
+        "  (2, 41),\n",
+        "  (2, 42),\n",
+        "  (3, 6),\n",
+        "  (3, 16),\n",
+        "  (3, 17),\n",
+        "  (3, 26),\n",
+        "  (3, 47),\n",
+        "  (3, 48),\n",
+        "  (4, 11),\n",
+        "  (4, 20),\n",
+        "  (5, 2),\n",
+        "  (5, 27),\n",
+        "  (5, 34),\n",
+        "  (5, 41),\n",
+        "  (6, 1),\n",
+        "  (6, 8),\n",
+        "  (7, 1),\n",
+        "  (7, 27),\n",
+        "  (7, 30),\n",
+        "  (7, 34),\n",
+        "  (7, 44),\n",
+        "  (7, 52),\n",
+        "  (7, 55),\n",
+        "  (8, 8),\n",
+        "  (8, 14),\n",
+        "  (8, 55),\n",
+        "  (9, 6),\n",
+        "  (9, 23),\n",
+        "  (9, 38),\n",
+        "  (9, 44),\n",
+        "  (9, 48),\n",
+        "  (9, 55),\n",
+        "  (10, 9),\n",
+        "  (11, 20),\n",
+        "  (11, 21),\n",
+        "  (11, 36),\n",
+        "  (12, 1),\n",
+        "  (12, 15),\n",
+        "  (12, 41),\n",
+        "  (12, 50),\n",
+        "  (13, 44),\n",
+        "  (13, 46),\n",
+        "  (13, 52),\n",
+        "  (14, 26),\n",
+        "  (14, 36),\n",
+        "  (15, 1),\n",
+        "  (15, 7),\n",
+        "  (15, 14),\n",
+        "  (15, 18),\n",
+        "  (15, 34),\n",
+        "  (15, 43),\n",
+        "  (16, 17),\n",
+        "  (16, 42),\n",
+        "  (18, 3),\n",
+        "  (18, 6),\n",
+        "  (18, 19),\n",
+        "  (18, 20),\n",
+        "  (18, 27),\n",
+        "  (18, 31),\n",
+        "  (19, 4),\n",
+        "  (19, 7),\n",
+        "  (19, 10),\n",
+        "  (19, 14),\n",
+        "  (19, 33),\n",
+        "  (19, 41),\n",
+        "  (19, 51),\n",
+        "  (20, 20),\n",
+        "  (21, 11),\n",
+        "  (22, 11),\n",
+        "  (22, 14),\n",
+        "  (22, 15),\n",
+        "  (22, 33),\n",
+        "  (22, 34),\n",
+        "  (22, 36),\n",
+        "  (24, 9),\n",
+        "  (24, 34),\n",
+        "  (24, 41),\n",
+        "  (24, 43)],\n",
+        " 'p': [(0, 35),\n",
+        "  (0, 43),\n",
+        "  (0, 44),\n",
+        "  (3, 20),\n",
+        "  (3, 46),\n",
+        "  (4, 1),\n",
+        "  (4, 28),\n",
+        "  (5, 1),\n",
+        "  (5, 51),\n",
+        "  (6, 7),\n",
+        "  (6, 35),\n",
+        "  (6, 49),\n",
+        "  (7, 43),\n",
+        "  (8, 27),\n",
+        "  (10, 53),\n",
+        "  (11, 30),\n",
+        "  (14, 44),\n",
+        "  (15, 15),\n",
+        "  (15, 23),\n",
+        "  (15, 45),\n",
+        "  (17, 0),\n",
+        "  (17, 1),\n",
+        "  (18, 12),\n",
+        "  (18, 14),\n",
+        "  (18, 49),\n",
+        "  (18, 54),\n",
+        "  (21, 34),\n",
+        "  (22, 1),\n",
+        "  (22, 16),\n",
+        "  (22, 39),\n",
+        "  (22, 46),\n",
+        "  (24, 3),\n",
+        "  (24, 15),\n",
+        "  (24, 52)],\n",
+        " 'v': [(1, 36),\n",
+        "  (1, 48),\n",
+        "  (1, 55),\n",
+        "  (3, 8),\n",
+        "  (3, 21),\n",
+        "  (5, 43),\n",
+        "  (5, 46),\n",
+        "  (5, 49),\n",
+        "  (6, 10),\n",
+        "  (6, 47),\n",
+        "  (10, 17),\n",
+        "  (11, 46),\n",
+        "  (11, 55),\n",
+        "  (15, 10),\n",
+        "  (15, 36),\n",
+        "  (16, 21),\n",
+        "  (16, 51),\n",
+        "  (18, 15),\n",
+        "  (18, 18),\n",
+        "  (19, 6),\n",
+        "  (21, 23),\n",
+        "  (23, 25),\n",
+        "  (23, 31),\n",
+        "  (24, 32)],\n",
+        " 'h': [(0, 12),\n",
+        "  (0, 24),\n",
+        "  (0, 26),\n",
+        "  (0, 30),\n",
+        "  (1, 42),\n",
+        "  (1, 45),\n",
+        "  (2, 4),\n",
+        "  (2, 27),\n",
+        "  (2, 29),\n",
+        "  (2, 30),\n",
+        "  (3, 49),\n",
+        "  (3, 52),\n",
+        "  (5, 30),\n",
+        "  (6, 5),\n",
+        "  (6, 21),\n",
+        "  (6, 30),\n",
+        "  (6, 42),\n",
+        "  (7, 38),\n",
+        "  (7, 48),\n",
+        "  (7, 51),\n",
+        "  (8, 30),\n",
+        "  (8, 34),\n",
+        "  (9, 18),\n",
+        "  (9, 50),\n",
+        "  (10, 11),\n",
+        "  (10, 32),\n",
+        "  (11, 10),\n",
+        "  (11, 11),\n",
+        "  (11, 43),\n",
+        "  (12, 7),\n",
+        "  (12, 17),\n",
+        "  (12, 19),\n",
+        "  (12, 20),\n",
+        "  (12, 29),\n",
+        "  (12, 34),\n",
+        "  (13, 6),\n",
+        "  (13, 23),\n",
+        "  (13, 27),\n",
+        "  (14, 15),\n",
+        "  (15, 24),\n",
+        "  (15, 28),\n",
+        "  (16, 0),\n",
+        "  (16, 3),\n",
+        "  (16, 20),\n",
+        "  (18, 42),\n",
+        "  (18, 45),\n",
+        "  (19, 44),\n",
+        "  (19, 53),\n",
+        "  (20, 38),\n",
+        "  (21, 9),\n",
+        "  (21, 41),\n",
+        "  (22, 28),\n",
+        "  (23, 1),\n",
+        "  (23, 49),\n",
+        "  (24, 10),\n",
+        "  (24, 31)],\n",
+        " 'e': [(0, 4),\n",
+        "  (0, 17),\n",
+        "  (0, 21),\n",
+        "  (0, 39),\n",
+        "  (0, 50),\n",
+        "  (0, 53),\n",
+        "  (0, 55),\n",
+        "  (1, 10),\n",
+        "  (1, 11),\n",
+        "  (1, 18),\n",
+        "  (1, 22),\n",
+        "  (1, 32),\n",
+        "  (1, 40),\n",
+        "  (1, 49),\n",
+        "  (1, 51),\n",
+        "  (1, 52),\n",
+        "  (2, 2),\n",
+        "  (2, 16),\n",
+        "  (2, 46),\n",
+        "  (2, 50),\n",
+        "  (2, 51),\n",
+        "  (2, 55),\n",
+        "  (3, 5),\n",
+        "  (3, 12),\n",
+        "  (3, 30),\n",
+        "  (3, 33),\n",
+        "  (3, 42),\n",
+        "  (4, 5),\n",
+        "  (4, 7),\n",
+        "  (4, 10),\n",
+        "  (4, 19),\n",
+        "  (4, 31),\n",
+        "  (4, 42),\n",
+        "  (4, 43),\n",
+        "  (5, 6),\n",
+        "  (5, 16),\n",
+        "  (5, 17),\n",
+        "  (5, 18),\n",
+        "  (5, 25),\n",
+        "  (5, 38),\n",
+        "  (5, 54),\n",
+        "  (5, 55),\n",
+        "  (6, 9),\n",
+        "  (6, 11),\n",
+        "  (6, 12),\n",
+        "  (6, 15),\n",
+        "  (6, 22),\n",
+        "  (6, 25),\n",
+        "  (6, 34),\n",
+        "  (6, 44),\n",
+        "  (6, 52),\n",
+        "  (7, 4),\n",
+        "  (7, 7),\n",
+        "  (7, 8),\n",
+        "  (7, 9),\n",
+        "  (7, 26),\n",
+        "  (7, 31),\n",
+        "  (7, 35),\n",
+        "  (7, 47),\n",
+        "  (8, 10),\n",
+        "  (8, 26),\n",
+        "  (8, 32),\n",
+        "  (8, 40),\n",
+        "  (8, 42),\n",
+        "  (8, 43),\n",
+        "  (8, 50),\n",
+        "  (8, 51),\n",
+        "  (8, 52),\n",
+        "  (8, 54),\n",
+        "  (9, 0),\n",
+        "  (9, 1),\n",
+        "  (9, 2),\n",
+        "  (9, 10),\n",
+        "  (9, 16),\n",
+        "  (9, 24),\n",
+        "  (9, 36),\n",
+        "  (9, 41),\n",
+        "  (9, 43),\n",
+        "  (9, 51),\n",
+        "  (10, 2),\n",
+        "  (10, 7),\n",
+        "  (10, 16),\n",
+        "  (10, 43),\n",
+        "  (11, 3),\n",
+        "  (11, 8),\n",
+        "  (11, 16),\n",
+        "  (11, 19),\n",
+        "  (11, 22),\n",
+        "  (11, 29),\n",
+        "  (11, 35),\n",
+        "  (11, 45),\n",
+        "  (11, 47),\n",
+        "  (11, 51),\n",
+        "  (11, 54),\n",
+        "  (12, 9),\n",
+        "  (12, 12),\n",
+        "  (12, 26),\n",
+        "  (12, 36),\n",
+        "  (12, 37),\n",
+        "  (12, 38),\n",
+        "  (12, 39),\n",
+        "  (12, 43),\n",
+        "  (12, 44),\n",
+        "  (12, 48),\n",
+        "  (12, 51),\n",
+        "  (13, 2),\n",
+        "  (13, 19),\n",
+        "  (13, 26),\n",
+        "  (13, 45),\n",
+        "  (13, 47),\n",
+        "  (14, 11),\n",
+        "  (14, 29),\n",
+        "  (14, 31),\n",
+        "  (14, 32),\n",
+        "  (14, 50),\n",
+        "  (14, 53),\n",
+        "  (14, 55),\n",
+        "  (15, 21),\n",
+        "  (16, 2),\n",
+        "  (16, 6),\n",
+        "  (16, 10),\n",
+        "  (16, 13),\n",
+        "  (16, 30),\n",
+        "  (16, 35),\n",
+        "  (16, 37),\n",
+        "  (17, 5),\n",
+        "  (17, 17),\n",
+        "  (17, 19),\n",
+        "  (17, 24),\n",
+        "  (17, 25),\n",
+        "  (17, 35),\n",
+        "  (17, 52),\n",
+        "  (18, 24),\n",
+        "  (18, 34),\n",
+        "  (18, 53),\n",
+        "  (19, 13),\n",
+        "  (19, 19),\n",
+        "  (19, 29),\n",
+        "  (19, 30),\n",
+        "  (19, 47),\n",
+        "  (20, 1),\n",
+        "  (20, 5),\n",
+        "  (20, 12),\n",
+        "  (20, 13),\n",
+        "  (20, 25),\n",
+        "  (20, 37),\n",
+        "  (21, 2),\n",
+        "  (21, 3),\n",
+        "  (21, 15),\n",
+        "  (21, 20),\n",
+        "  (21, 22),\n",
+        "  (21, 24),\n",
+        "  (21, 35),\n",
+        "  (21, 46),\n",
+        "  (21, 53),\n",
+        "  (21, 54),\n",
+        "  (22, 10),\n",
+        "  (22, 21),\n",
+        "  (22, 22),\n",
+        "  (22, 49),\n",
+        "  (22, 50),\n",
+        "  (23, 17),\n",
+        "  (23, 23),\n",
+        "  (23, 34),\n",
+        "  (23, 35),\n",
+        "  (23, 44),\n",
+        "  (23, 50),\n",
+        "  (23, 51),\n",
+        "  (23, 54),\n",
+        "  (24, 2),\n",
+        "  (24, 11),\n",
+        "  (24, 12),\n",
+        "  (24, 18),\n",
+        "  (24, 21),\n",
+        "  (24, 28),\n",
+        "  (24, 33)]}"
+       ]
+      }
+     ],
+     "prompt_number": 21
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "keycolumn = make_cadenus_keycolumn(reverse=True)\n",
+      "inverse_keycolumn = {v: l for l, v in keycolumn.items()}\n",
+      "inverse_keycolumn"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 22,
+       "text": [
+        "{0: 'a',\n",
+        " 1: 'z',\n",
+        " 2: 'y',\n",
+        " 3: 'x',\n",
+        " 4: 'w',\n",
+        " 5: 'u',\n",
+        " 6: 't',\n",
+        " 7: 's',\n",
+        " 8: 'r',\n",
+        " 9: 'q',\n",
+        " 10: 'p',\n",
+        " 11: 'o',\n",
+        " 12: 'n',\n",
+        " 13: 'm',\n",
+        " 14: 'l',\n",
+        " 15: 'k',\n",
+        " 16: 'j',\n",
+        " 17: 'i',\n",
+        " 18: 'h',\n",
+        " 19: 'g',\n",
+        " 20: 'f',\n",
+        " 21: 'e',\n",
+        " 22: 'd',\n",
+        " 23: 'c',\n",
+        " 24: 'b'}"
+       ]
+      }
+     ],
+     "prompt_number": 22
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def valid_partial_solution(solution, inverse_keycolumn):\n",
+      "    row_indices = [p[0] for p in sorted(solution, key=lambda x: x[1])]\n",
+      "    row_letters = [inverse_keycolumn[i] for i in row_indices]\n",
+      "    letter_pairs = ngrams(row_letters, 2)\n",
+      "    return all(p[0] <= p[1] for p in letter_pairs)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 23
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "solutions = [[p] for p in letter_positions['p']]\n",
+      "for letter in 'ha': #'haseseven':\n",
+      "    new_solutions = []\n",
+      "    for solution in solutions:\n",
+      "        used_columns = [p[1] for p in solution]\n",
+      "        for position in letter_positions[letter]:\n",
+      "            if position[1] not in used_columns:\n",
+      "                if valid_partial_solution(solution + [position], inverse_keycolumn):\n",
+      "                    new_solutions += [solution + [position]]\n",
+      "    solutions = new_solutions\n",
+      "len(solutions)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 24,
+       "text": [
+        "43005"
+       ]
+      }
+     ],
+     "prompt_number": 24
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "valid_partial_solution(solutions[1], inverse_keycolumn)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 25,
+       "text": [
+        "True"
+       ]
+      }
+     ],
+     "prompt_number": 25
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "display = []\n",
+      "for p in solutions[1]:\n",
+      "    this_column = columns[p[1]]\n",
+      "    rotated_column = this_column[p[0]:] + this_column[:p[0]]\n",
+      "    display += [rotated_column]\n",
+      "display_rows = [''.join(r) for r in zip(*display)]\n",
+      "display_rows"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 26,
+       "text": [
+        "['pha',\n",
+        " 'ruo',\n",
+        " 'oll',\n",
+        " 'rea',\n",
+        " 'laa',\n",
+        " 'tut',\n",
+        " 'pei',\n",
+        " 'ead',\n",
+        " 'nrt',\n",
+        " 'imi',\n",
+        " 'non',\n",
+        " 'eie',\n",
+        " 'aed',\n",
+        " 'mir',\n",
+        " 'inl',\n",
+        " 'lwi',\n",
+        " 'eah',\n",
+        " 'eai',\n",
+        " 'aps',\n",
+        " 'cnl',\n",
+        " 'ren',\n",
+        " 'ege',\n",
+        " 'xoo',\n",
+        " 'eau',\n",
+        " 'uep']"
+       ]
+      }
+     ],
+     "prompt_number": 26
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def display_solution(solution, columns):\n",
+      "    display = []\n",
+      "    for p in solution:\n",
+      "        this_column = columns[p[1]]\n",
+      "        rotated_column = this_column[p[0]:] + this_column[:p[0]]\n",
+      "        display += [rotated_column]\n",
+      "    return [''.join(r) for r in zip(*display)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 27
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "display_solution(solutions[0], columns)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 28,
+       "text": [
+        "['pha',\n",
+        " 'ruo',\n",
+        " 'ols',\n",
+        " 'rer',\n",
+        " 'lai',\n",
+        " 'tul',\n",
+        " 'pei',\n",
+        " 'eaa',\n",
+        " 'nro',\n",
+        " 'ime',\n",
+        " 'nod',\n",
+        " 'eid',\n",
+        " 'aea',\n",
+        " 'mii',\n",
+        " 'int',\n",
+        " 'lwi',\n",
+        " 'eah',\n",
+        " 'eap',\n",
+        " 'apk',\n",
+        " 'cny',\n",
+        " 'rew',\n",
+        " 'egn',\n",
+        " 'xor',\n",
+        " 'eaa',\n",
+        " 'uea']"
+       ]
+      }
+     ],
+     "prompt_number": 28
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "sum(Ptrigrams(r) for r in display_rows)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 29,
+       "text": [
+        "-109.09171451522874"
+       ]
+      }
+     ],
+     "prompt_number": 29
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def score_solution(solution, columns):\n",
+      "    display = []\n",
+      "    for p in solution:\n",
+      "        this_column = columns[p[1]]\n",
+      "        rotated_column = this_column[p[0]:] + this_column[:p[0]]\n",
+      "        display += [rotated_column]\n",
+      "    display_rows = [''.join(r) for r in zip(*display)]\n",
+      "    return sum(Ptrigrams(r) for r in display_rows)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 30
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[(s, display_solution(s, columns), score_solution(s, columns)) for s in solutions[:10]]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 31,
        "text": [
-        "b'\\x01D\\x02Q\\xd3\\x98\\x053\\xc5\\x0eY&)\\x123<\\x8f8\\x80\\xea\\xc3\\xa2\\xf2\\xc4\\xc4p\\x06\\xf7\\xa5\\xa6\\\\\\xc9\\x16\\x90\\xa4qP\\xe8\\xceC\\x1b\\x88J2B\\x8d\\t\\x16\\x94\\x93X\\x00YN\\xc8#g\\x1a\\xb9\\xcd$O@\\x1e \\xa9\"BNU\\x92\\x08\\xb3\\xad\\xd2\\x98\\xdc\\x05\\xbb\\x00$\\x98\\xd6\\x8d\\x06kbw\\x1c\\xf3\\x93@\\xe4-\\xa2l\\xa4\\x81D\\x80kHD!\\x04\\x8d\\xa6\\x06\\x92Q\\xab\\x8c\\x82#\\x16\\x94\\x86g\\xd5\\xc8\\x02$\\x07\\x00\\x8e\\x01\\x07\\x16\\xa2qm\\xc8\\x83E\\xf2\\x91\\xc03\\x8enC\\xc0\\t\\x92\\xe4kI \\x1a.\\x0c\\xd6IE\\xb1r#\\x87\\x84\\xc4\\x18\\x96\\xb4X\\x0b\\x02\\xc8F\\xa0\\xd1\\x8bm\\x88\\xad\\x0c[\\xe57,\\x85\\x9cF\\xca\\x02(!\\x08\\x84\\x01\\xcbi- 8\\xf1\\x9a\\xe57\\x04\\x93l\\x97R\\xa2\\xa3uf\\xf7\\x00\\x84D\\x84\\x87\\x1d\\x0f\\x91*B\\x0ed\\xb1A\\x16\\x9c\\x81Y\\x00\\xe9\\xb8\\xf3\\x9c\\xc8\\xf6\\x89@sObM\\x95\\xc3\\xe3\\x129\\xad\\x04\\x8c2\\r\\xc4!\\x1c\\x002b@\\xa74\\x15\\xa0\\x1cI(\\xceD\\x8b\\xa4I\\xc4\\xe2@\\xa6\\xf9\\x00\\x04:\\xc6y\\x16\\xf2p\\x1d1L!\\x93\\x88\\x88\\xb6@\\x1a\\xf18\\xc6\\x8d\\x88\\x88\\xf9\\xcc\\xf1%\\x0e\\xd5L\\x02 \\x88E\\xc6\\xcdDHB\\x00\\x92!\\x08\\x81\\xa2N0\\x88\\xe663\"N\\x03\\x002#Q5\\xdaqhX\\x82.@\\x89&IE\\xa6\\x93N@\\xa1\\xd2\\x1a\\x08\\xd0\\x15dD\\x80w\\t\\x05%XPL\\r\\x04\\xe2\\xd4\\x00\\xcd8&\\xd6 -E\\nF\\xc6n\\x9c\\xe2\\xdc<\\x08\\x1e\\x10C\\r\\xac$Nt:q$\\xc4IH\\x88X\\xe2\\x11\\x11\\xf1A\\x80I8\\x03\\\\\\xc0t\\x12\\xa4\\x0cDF\\xac\\x95\\x04\\x806\\xb6gi\\x112!\\x12\\x01\\xe8s\\xd0\\x0csH\\\\\\x1dnm\\x8e\\x02\\x10\\x84t\\x9aB`\\r\"$I\\xb8\\xd8D\\xc9\\x15\\xa0\\xf3\\x13\\x10\\xe4D\\x11(\\xdcI\\xb5\\x07\\x9bHt!@dF\\xc6\\x80`h\\x1c9\\x12DF\\x04\\xb9 \\r\\x98\\x1c\\xb9\\x89\\x18b\\x06F\\xceg\\\\\\xda;\\xces`$\\x15\\x90\\x04$\\xd6\\x89\"3\\xb4\\xe9\\x17\\x94\\x08\\\\\\xc8\\x07\\x10\\xa4D\\x90\\x84a\\x12B\\xab;\"O\\x88d\\x86\\x91o<X\\xe3\\xa0\\x06j\\xe4\\xba\\xa2n\\x18\\x11!\\xbd\\xb8\\x18\\xc4\\x00:`8\\x88y\\xd0\\x88\\x8cH0\\x10St\\x9b\\x13\\xd5\\xa0p\\xdc\\x858\\x93\\x12\\x1aF\\x92\\x91\\x8a$1:\\x91\\x01\\x97T1\\x94{\\xc6\\x89\\x90\\r\\x1a&\\xc0\\x01\\x00A\\x16G5\\xb1!\\x06\\x07\\x0c.E\\x18E\\xc5\\xd3l\\xe73\"m\\x8a\\xe2\\x825\\xa8R\\xf1\\'\\x1aS\\x12\\x0b\\x87\\xa1\\xf5@\\xeb)1\\xa2\"\\x01$\"rkH\\t\\xa2ndN\\x16\\x9d\\xa8\\x1b\\xe2\\xb8\\x91\\xee\\xc3@\\xb96\\xb2\\x1b\\xa4\\x06\\x92H\\x99@F\\xaefp\\xc19\\x90\\x80D\\x90(\\xb9\\xd3d\\x98S\\x82\\x84j##\\x1f\\r\\xb1\\x10\\xd9\\x90\\xce\\x1a\\x10\\xb2\\x10s\\x04Z\\xe9D@\\x01\\x1a9\\x8a\\x93\\x99G\\x10\\x90\\xf3aQ7:#\\x8d\\x10\\x07`\\x00k\\x88E\\x8d\\xc8i\\xe9#\"d\\x03\\xa2\\x82\\x08\\x95#\\x1b8\\x82l\\x99^J\\n\\x93\\x01\\xc0\\xc9\\xb4\\x96sP!\\x90\\x8c\\x8b\\xc0\\xe5\\xa2n\\x01I\\':RyZ\\xb6\\x90\\x8et\\xc0#\\xadh\\x8c\\xa5y8\\xaf\\x19fX\\xb5\\xf1\\x01\\x08\\x0c-\\xcd\\x01\\xc1I\\xb6bl\\xc4\\x10Yni\\x0b7\\x02d\\x15]a\\xae\\xd5kHA\\xcd\\x08r\\r2\\x19\\x93\\x01\\xc8@L\\x85\\x00\\x08\\xf8\\xc4Qt\\x8eBF/\\x02\\xc84\\x11\\xa6@\\xe3\\x12:\\x87\\xa9%H\\xbb\\x13l\\x9d$6\\x88\\xa2\\x1cW\\xc4`'"
+        "[([(0, 35), (0, 12), (0, 0)],\n",
+        "  ['pha',\n",
+        "   'ruo',\n",
+        "   'ols',\n",
+        "   'rer',\n",
+        "   'lai',\n",
+        "   'tul',\n",
+        "   'pei',\n",
+        "   'eaa',\n",
+        "   'nro',\n",
+        "   'ime',\n",
+        "   'nod',\n",
+        "   'eid',\n",
+        "   'aea',\n",
+        "   'mii',\n",
+        "   'int',\n",
+        "   'lwi',\n",
+        "   'eah',\n",
+        "   'eap',\n",
+        "   'apk',\n",
+        "   'cny',\n",
+        "   'rew',\n",
+        "   'egn',\n",
+        "   'xor',\n",
+        "   'eaa',\n",
+        "   'uea'],\n",
+        "  -112.23213925765266),\n",
+        " ([(0, 35), (0, 12), (0, 3)],\n",
+        "  ['pha',\n",
+        "   'ruo',\n",
+        "   'oll',\n",
+        "   'rea',\n",
+        "   'laa',\n",
+        "   'tut',\n",
+        "   'pei',\n",
+        "   'ead',\n",
+        "   'nrt',\n",
+        "   'imi',\n",
+        "   'non',\n",
+        "   'eie',\n",
+        "   'aed',\n",
+        "   'mir',\n",
+        "   'inl',\n",
+        "   'lwi',\n",
+        "   'eah',\n",
+        "   'eai',\n",
+        "   'aps',\n",
+        "   'cnl',\n",
+        "   'ren',\n",
+        "   'ege',\n",
+        "   'xoo',\n",
+        "   'eau',\n",
+        "   'uep'],\n",
+        "  -109.09171451522874),\n",
+        " ([(0, 35), (0, 12), (0, 9)],\n",
+        "  ['pha',\n",
+        "   'ruo',\n",
+        "   'old',\n",
+        "   'reo',\n",
+        "   'lan',\n",
+        "   'tur',\n",
+        "   'pee',\n",
+        "   'eae',\n",
+        "   'nro',\n",
+        "   'imc',\n",
+        "   'nos',\n",
+        "   'eir',\n",
+        "   'aee',\n",
+        "   'mim',\n",
+        "   'ini',\n",
+        "   'lwk',\n",
+        "   'ear',\n",
+        "   'eai',\n",
+        "   'api',\n",
+        "   'cno',\n",
+        "   'rei',\n",
+        "   'egh',\n",
+        "   'xof',\n",
+        "   'eat',\n",
+        "   'ues'],\n",
+        "  -105.51902198106185),\n",
+        " ([(0, 35), (0, 12), (0, 29)],\n",
+        "  ['pha',\n",
+        "   'rut',\n",
+        "   'olh',\n",
+        "   'rea',\n",
+        "   'lab',\n",
+        "   'tuo',\n",
+        "   'peo',\n",
+        "   'eat',\n",
+        "   'nrt',\n",
+        "   'imw',\n",
+        "   'noa',\n",
+        "   'eie',\n",
+        "   'aeh',\n",
+        "   'mii',\n",
+        "   'ine',\n",
+        "   'lwi',\n",
+        "   'eao',\n",
+        "   'ead',\n",
+        "   'api',\n",
+        "   'cne',\n",
+        "   'rec',\n",
+        "   'ega',\n",
+        "   'xol',\n",
+        "   'eal',\n",
+        "   'ueo'],\n",
+        "  -106.91642615054437),\n",
+        " ([(0, 35), (0, 12), (0, 41)],\n",
+        "  ['pha',\n",
+        "   'rur',\n",
+        "   'ols',\n",
+        "   'rex',\n",
+        "   'lal',\n",
+        "   'tus',\n",
+        "   'pen',\n",
+        "   'eac',\n",
+        "   'nrc',\n",
+        "   'ime',\n",
+        "   'nou',\n",
+        "   'eit',\n",
+        "   'aes',\n",
+        "   'mia',\n",
+        "   'int',\n",
+        "   'lwa',\n",
+        "   'eai',\n",
+        "   'eat',\n",
+        "   'apr',\n",
+        "   'cns',\n",
+        "   'ref',\n",
+        "   'egh',\n",
+        "   'xof',\n",
+        "   'eai',\n",
+        "   'ues'],\n",
+        "  -100.92420426683796),\n",
+        " ([(0, 35), (0, 12), (1, 44)],\n",
+        "  ['pha',\n",
+        "   'ruc',\n",
+        "   'olg',\n",
+        "   'ren',\n",
+        "   'laf',\n",
+        "   'tue',\n",
+        "   'pes',\n",
+        "   'eal',\n",
+        "   'nrs',\n",
+        "   'imn',\n",
+        "   'noi',\n",
+        "   'eie',\n",
+        "   'aes',\n",
+        "   'mip',\n",
+        "   'ind',\n",
+        "   'lwc',\n",
+        "   'eag',\n",
+        "   'ean',\n",
+        "   'aph',\n",
+        "   'cno',\n",
+        "   'ret',\n",
+        "   'egr',\n",
+        "   'xoe',\n",
+        "   'eai',\n",
+        "   'uep'],\n",
+        "  -108.53207489276411),\n",
+        " ([(0, 35), (0, 12), (1, 47)],\n",
+        "  ['pha',\n",
+        "   'rua',\n",
+        "   'ols',\n",
+        "   'rer',\n",
+        "   'lad',\n",
+        "   'tuv',\n",
+        "   'pee',\n",
+        "   'ean',\n",
+        "   'nrg',\n",
+        "   'imo',\n",
+        "   'noe',\n",
+        "   'ein',\n",
+        "   'aee',\n",
+        "   'mii',\n",
+        "   'iny',\n",
+        "   'lwr',\n",
+        "   'ean',\n",
+        "   'eai',\n",
+        "   'ape',\n",
+        "   'cnd',\n",
+        "   'rew',\n",
+        "   'egr',\n",
+        "   'xot',\n",
+        "   'eai',\n",
+        "   'ueg'],\n",
+        "  -109.50900823047225),\n",
+        " ([(0, 35), (0, 12), (2, 47)],\n",
+        "  ['pha',\n",
+        "   'rus',\n",
+        "   'olr',\n",
+        "   'red',\n",
+        "   'lav',\n",
+        "   'tue',\n",
+        "   'pen',\n",
+        "   'eag',\n",
+        "   'nro',\n",
+        "   'ime',\n",
+        "   'non',\n",
+        "   'eie',\n",
+        "   'aei',\n",
+        "   'miy',\n",
+        "   'inr',\n",
+        "   'lwn',\n",
+        "   'eai',\n",
+        "   'eae',\n",
+        "   'apd',\n",
+        "   'cnw',\n",
+        "   'rer',\n",
+        "   'egt',\n",
+        "   'xoi',\n",
+        "   'eag',\n",
+        "   'uea'],\n",
+        "  -114.40196859359595),\n",
+        " ([(0, 35), (0, 12), (3, 50)],\n",
+        "  ['pha',\n",
+        "   'ruw',\n",
+        "   'olt',\n",
+        "   'rer',\n",
+        "   'lad',\n",
+        "   'tue',\n",
+        "   'peh',\n",
+        "   'ear',\n",
+        "   'nrc',\n",
+        "   'ims',\n",
+        "   'noc',\n",
+        "   'eie',\n",
+        "   'aec',\n",
+        "   'mil',\n",
+        "   'inr',\n",
+        "   'lwr',\n",
+        "   'ear',\n",
+        "   'eai',\n",
+        "   'api',\n",
+        "   'cne',\n",
+        "   'ree',\n",
+        "   'ego',\n",
+        "   'xoe',\n",
+        "   'ear',\n",
+        "   'uee'],\n",
+        "  -106.68850150792129),\n",
+        " ([(0, 35), (0, 12), (4, 38)],\n",
+        "  ['pha',\n",
+        "   'rue',\n",
+        "   'olk',\n",
+        "   'reh',\n",
+        "   'laa',\n",
+        "   'tus',\n",
+        "   'peb',\n",
+        "   'eaa',\n",
+        "   'nre',\n",
+        "   'imd',\n",
+        "   'nor',\n",
+        "   'eit',\n",
+        "   'aeu',\n",
+        "   'mio',\n",
+        "   'int',\n",
+        "   'lwo',\n",
+        "   'eah',\n",
+        "   'eau',\n",
+        "   'apf',\n",
+        "   'cni',\n",
+        "   'rey',\n",
+        "   'egg',\n",
+        "   'xoo',\n",
+        "   'ean',\n",
+        "   'uet'],\n",
+        "  -108.49770543928673)]"
        ]
       }
      ],
-     "prompt_number": 18
+     "prompt_number": 31
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "bytes([(int(c, 2)) for c in chunks(c8b, 8)]).decode('utf-8', 'replace')"
+      "sorted(solutions[:10], key=lambda s: score_solution(s, columns), reverse=True)"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 25,
+       "prompt_number": 32,
        "text": [
-        "'\\x01D\\x02Q\u04d8\\x053\ufffd\\x0eY&)\\x123<\ufffd8\ufffd\ufffd\u00e2\ufffd\ufffd\ufffdp\\x06\ufffd\ufffd\ufffd\\\\\ufffd\\x16\ufffd\ufffdqP\ufffd\ufffdC\\x1b\ufffdJ2B\ufffd\\t\\x16\ufffd\ufffdX\\x00YN\ufffd#g\\x1a\ufffd\ufffd$O@\\x1e \ufffd\"BNU\ufffd\\x08\ufffd\ufffd\u0498\ufffd\\x05\ufffd\\x00$\ufffd\\u058d\\x06kbw\\x1c\ufffd@\ufffd-\ufffdl\ufffd\ufffdD\ufffdkHD!\\x04\ufffd\ufffd\\x06\ufffdQ\ufffd\ufffd\ufffd#\\x16\ufffd\ufffdg\ufffd\ufffd\\x02$\\x07\\x00\ufffd\\x01\\x07\\x16\ufffdqm\u0203E\ufffd\ufffd3\ufffdnC\ufffd\\t\ufffd\ufffdkI \\x1a.\\x0c\ufffdIE\ufffdr#\ufffd\ufffd\ufffd\\x18\ufffd\ufffdX\\x0b\\x02\ufffdF\ufffd\u044bm\ufffd\ufffd\\x0c[\ufffd7,\ufffd\ufffdF\ufffd\\x02(!\\x08\ufffd\\x01\ufffdi- 8\ufffd\ufffd7\\x04\ufffdl\ufffdR\ufffd\ufffduf\ufffd\\x00\ufffdD\ufffd\ufffd\\x1d\\x0f\ufffd*B\\x0ed\ufffdA\\x16\ufffd\ufffdY\\x00\ufffd\ufffd\ufffd\ufffd\ufffd@sObM\ufffd\ufffd\ufffd\\x129\ufffd\\x04\ufffd2\\r\ufffd!\\x1c\\x002b@\ufffd4\\x15\ufffd\\x1cI(\ufffdD\ufffd\ufffdI\ufffd\ufffd@\ufffd\ufffd\\x00\\x04:\ufffdy\\x16\ufffdp\\x1d1L!\ufffd\ufffd\ufffd\ufffd@\\x1a\ufffd8\u018d\ufffd\ufffd\ufffd\ufffd\ufffd%\\x0e\ufffdL\\x02 \ufffdE\ufffd\ufffdDHB\\x00\ufffd!\\x08\ufffd\ufffdN0\ufffd\ufffd63\"N\\x03\\x002#Q5\ufffdqhX\ufffd.@\ufffd&IE\ufffd\ufffdN@\ufffd\ufffd\\x1a\\x08\ufffd\\x15dD\ufffdw\\t\\x05%XPL\\r\\x04\ufffd\ufffd\\x00\ufffd8&\ufffd -E\\nF\ufffdn\ufffd\ufffd\ufffd<\\x08\\x1e\\x10C\\r\ufffd$Nt:q$\ufffdIH\ufffdX\ufffd\\x11\\x11\ufffdA\ufffdI8\\x03\\\\\ufffdt\\x12\ufffd\\x0cDF\ufffd\ufffd\\x04\ufffd6\ufffdgi\\x112!\\x12\\x01\ufffds\ufffd\\x0csH\\\\\\x1dnm\ufffd\\x02\\x10\ufffdt\ufffdB`\\r\"$I\ufffd\ufffdD\ufffd\\x15\ufffd\ufffd\\x13\\x10\ufffdD\\x11(\ufffdI\ufffd\\x07\ufffdHt!@dF\u0180`h\\x1c9\\x12DF\\x04\ufffd \\r\ufffd\\x1c\ufffd\ufffd\\x18b\\x06F\ufffdg\\\\\ufffd;\ufffds`$\\x15\ufffd\\x04$\u0589\"3\ufffd\ufffd\\x17\ufffd\\x08\\\\\ufffd\\x07\\x10\ufffdD\ufffd\ufffda\\x12B\ufffd;\"O\ufffdd\ufffd\ufffdo<X\ufffd\\x06j\u4ea2n\\x18\\x11!\ufffd\ufffd\\x18\ufffd\\x00:`8\ufffdy\u0408\ufffdH0\\x10St\ufffd\\x13\\u0560p\u07058\ufffd\\x12\\x1aF\ufffd\ufffd\ufffd$1:\ufffd\\x01\ufffdT1\ufffd{\u0189\ufffd\\r\\x1a&\ufffd\\x01\\x00A\\x16G5\ufffd!\\x06\\x07\\x0c.E\\x18E\ufffd\ufffdl\ufffd3\"m\ufffd\ufffd5\ufffdR\ufffd\\'\\x1aS\\x12\\x0b\ufffd\ufffd\ufffd@\ufffd)1\ufffd\"\\x01$\"rkH\\t\ufffdndN\\x16\ufffd\ufffd\\x1b\u2e11\ufffd\ufffd@\ufffd6\ufffd\\x1b\ufffd\\x06\ufffdH\ufffd@F\ufffdfp\ufffd9\ufffd\ufffdD\ufffd(\ufffd\ufffdd\ufffdS\ufffd\ufffdj##\\x1f\\r\ufffd\\x10\u0650\ufffd\\x1a\\x10\ufffd\\x10s\\x04Z\ufffdD@\\x01\\x1a9\ufffd\ufffd\ufffdG\\x10\ufffd\ufffdaQ7:#\ufffd\\x10\\x07`\\x00k\ufffdE\ufffd\ufffdi\ufffd#\"d\\x03\ufffd\ufffd\\x08\ufffd#\\x1b8\ufffdl\ufffd^J\\n\ufffd\\x01\ufffd\u0274\ufffdsP!\ufffd\ufffd\ufffd\ufffd\ufffdn\\x01I\\':RyZ\ufffd\ufffd\ufffdt\ufffd#\ufffdh\ufffd\ufffdy8\ufffd\\x19fX\ufffd\ufffd\\x01\\x08\\x0c-\ufffd\\x01\ufffdI\ufffdbl\ufffd\\x10Yni\\x0b7\\x02d\\x15]a\ufffd\ufffdkHA\ufffd\\x08r\\r2\\x19\ufffd\\x01\ufffd@L\ufffd\\x00\\x08\ufffd\ufffdQt\ufffdBF/\\x02\ufffd4\\x11\ufffd@\ufffd\\x12:\ufffd\ufffd%H\ufffd\\x13l\ufffd$6\ufffd\ufffd\\x1cW\ufffd`'"
+        "[[(0, 35), (0, 12), (0, 41)],\n",
+        " [(0, 35), (0, 12), (0, 9)],\n",
+        " [(0, 35), (0, 12), (3, 50)],\n",
+        " [(0, 35), (0, 12), (0, 29)],\n",
+        " [(0, 35), (0, 12), (4, 38)],\n",
+        " [(0, 35), (0, 12), (1, 44)],\n",
+        " [(0, 35), (0, 12), (0, 3)],\n",
+        " [(0, 35), (0, 12), (1, 47)],\n",
+        " [(0, 35), (0, 12), (0, 0)],\n",
+        " [(0, 35), (0, 12), (2, 47)]]"
        ]
       }
      ],
-     "prompt_number": 25
+     "prompt_number": 32
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "solutions = sorted(solutions, key=lambda s: score_solution(s, columns), reverse=True)[:10000]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 33
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "bytes([(int(c, 2)) for c in chunks(c8b, 8)]).decode('utf_32', 'replace')"
+      "for letter in 'seseven': #'haseeight':\n",
+      "    new_solutions = []\n",
+      "    for solution in solutions:\n",
+      "        used_columns = [p[1] for p in solution]\n",
+      "        for position in letter_positions[letter]:\n",
+      "            if position[1] not in used_columns:\n",
+      "                if valid_partial_solution(solution + [position], inverse_keycolumn):\n",
+      "                    new_solutions += [solution + [position]]\n",
+      "    solutions = sorted(new_solutions, key=lambda s: score_solution(s, columns), reverse=True)[:10000]\n",
+      "len(solutions)"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 29,
+       "prompt_number": 34,
        "text": [
-        "'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\\U00072402\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd'"
+        "10000"
        ]
       }
      ],
-     "prompt_number": 29
+     "prompt_number": 34
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "display_solution(solutions[0], columns)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 35,
+       "text": [
+        "['phaseseven',\n",
+        " 'ninmelcalh',\n",
+        " 'andodrinho',\n",
+        " 'lmedyierts',\n",
+        " 'reaapstnen',\n",
+        " 'entaryafts',\n",
+        " 'sconhysefe',\n",
+        " 'birnerctan',\n",
+        " 'entaergeno',\n",
+        " 'wioontomoi',\n",
+        " 'ittretedus',\n",
+        " 'dttheselin',\n",
+        " 'ertalriesn',\n",
+        " 'enpraiaatp',\n",
+        " 'evisateths',\n",
+        " 'aytrvioymi',\n",
+        " 'feewiaihin',\n",
+        " 'lsnaltemai',\n",
+        " 'racessdctr',\n",
+        " 'odreacyugg',\n",
+        " 'itliciaooa',\n",
+        " 'ittrapinds',\n",
+        " 'trareseshh',\n",
+        " 'aecefdanst',\n",
+        " 'ancertalex']"
+       ]
+      }
+     ],
+     "prompt_number": 35
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "hinted_keywords = [w for w in keywords if w[0] =='f' if len(transpositions_of(w)) == 7]\n",
+      "len(hinted_keywords)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 36,
+       "text": [
+        "849"
+       ]
+      }
+     ],
+     "prompt_number": 36
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "hinted_keywords[:10]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 37,
+       "text": [
+        "['fabrics',\n",
+        " 'facings',\n",
+        " 'faction',\n",
+        " 'factors',\n",
+        " 'factory',\n",
+        " 'faculty',\n",
+        " 'fadeout',\n",
+        " 'failure',\n",
+        " 'fainest',\n",
+        " 'fainted']"
+       ]
+      }
+     ],
+     "prompt_number": 37
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "first_chunk = c8bl[:175]\n",
+      "len(first_chunk)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 38,
+       "text": [
+        "175"
+       ]
+      }
+     ],
+     "prompt_number": 38
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[cadenus_decipher(first_chunk, w, keycolumn)[:20] for w in hinted_keywords]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 39,
+       "text": [
+        "['gatlrlnjtonethnirreh',\n",
+        " 'raorejnptreanhriaeso',\n",
+        " 'raohoanptraesrriasul',\n",
+        " 'raohhanptraemrriasln',\n",
+        " 'raorhaeptrnemsrianln',\n",
+        " 'raonlneptrnissriaaoc',\n",
+        " 'garhrarjtartsnnifphn',\n",
+        " 'raoaalapteesnfriunnr',\n",
+        " 'raonanhpterfrariutpn',\n",
+        " 'garehhrjteaaraniessp',\n",
+        " 'raonhalpterafnriutsp',\n",
+        " 'fainrleptorniseirtno',\n",
+        " 'raoaanhptemfrariunpn',\n",
+        " 'raloannptirsrhrioalt',\n",
+        " 'falmireptinonseiosrn',\n",
+        " 'ralhaanptiafmrriospn',\n",
+        " 'faeilenptnoisreirroo',\n",
+        " 'raeoeanptneafhrirusp',\n",
+        " 'earotktntvrugheivarj',\n",
+        " 'gaeorhojtarernnisaep',\n",
+        " 'gaeorhnjtarerhnisaep',\n",
+        " 'raeooaeptareesrisaun',\n",
+        " 'garnahrjtvenranivrep',\n",
+        " 'raalaenptmifsrrinopo',\n",
+        " 'faoeoepptnneareihrus',\n",
+        " 'falhonpptnaerreirsut',\n",
+        " 'fanroanpthiesreiaoul',\n",
+        " 'fanhonpptraerreinsut',\n",
+        " 'rahnaanptaofmrrisepn',\n",
+        " 'fahrrinptaitoreisohh',\n",
+        " 'rarrjaaptnensfrineon',\n",
+        " 'gaaohrmjtsrrnnninapn',\n",
+        " 'gaaarhrjtsenraninnnp',\n",
+        " 'gasrlhrjtntnraniehrp',\n",
+        " 'fasanomptnensneieean',\n",
+        " 'raalrempftinsnrpiono',\n",
+        " 'raaorejpftneanrpihes',\n",
+        " 'ghrrlanjratnthnpfhri',\n",
+        " 'gharnarjreaetvnpnfai',\n",
+        " 'frtroenppwthsredoheo',\n",
+        " 'frahoepppeaearednsus',\n",
+        " 'raeaoalpfnsntirprlhi',\n",
+        " 'raaiahnpfmotarrpnhis',\n",
+        " 'froiianppnoosredhhrl',\n",
+        " 'rahrinnpfaeeorrpsere',\n",
+        " 'rahaaiupfaeselrpsnlr',\n",
+        " 'raaerejpfsreanrpnpes',\n",
+        " 'graeohnjetarrhneisap',\n",
+        " 'fitahanpoimesrerenln',\n",
+        " 'grtaaahjeosntrnernei',\n",
+        " 'rotaaanpeosetrrurnni',\n",
+        " 'roieaaopeeanfnrureep',\n",
+        " 'rrejahnpernfarrepops',\n",
+        " 'rrejarepernfnsrepopn',\n",
+        " 'fopalrnpertntheuiirh',\n",
+        " 'frpnhrlperoapneeiesd',\n",
+        " 'foperehpernpaaeuirds',\n",
+        " 'fopalaapersnteeuinri',\n",
+        " 'rrjalaepensnfrreonrp',\n",
+        " 'fopaarnpersmpreuinnd',\n",
+        " 'roatalhpeeifnarunepr',\n",
+        " 'gtfiehrjuterranrrrep',\n",
+        " 'rrainanpeneofhreerep',\n",
+        " 'filhranpoiapmrerosdn',\n",
+        " 'rrrajaapevtnnfrevioe',\n",
+        " 'roeaaanpeatefhrusinp',\n",
+        " 'rreinanpeaeofhresrep',\n",
+        " 'ronealnperrfnhrutppr',\n",
+        " 'fioraenpohpmsreredno',\n",
+        " 'fonprlnperrpnheutidr',\n",
+        " 'finlrenporipsrertodo',\n",
+        " 'rrlatajpenfisnrerpen',\n",
+        " 'rooaeaepenfntaruhpri',\n",
+        " 'fiairnhpomopraernhdn',\n",
+        " 'pfomrteddsnnwstcnsno',\n",
+        " 'rrninalpeheofnrearep',\n",
+        " 'fonrraeperipmseunodn',\n",
+        " 'fonrnrhperirpaeunotd',\n",
+        " 'pfnsoaiddsoseetccrne',\n",
+        " 'grnatahjeetonrnesire',\n",
+        " 'grnarhrjeetnranesinp',\n",
+        " 'ronarampeetnfnrusinp',\n",
+        " 'roaaeaepeifresrueppn',\n",
+        " 'finnnorpoesnsperscan',\n",
+        " 'rosaanmpeoftnnrurpia',\n",
+        " 'flapannpitrsrheoiilt',\n",
+        " 'raaeoaopntaefnreieup',\n",
+        " 'faaeorppntaevreeieuv',\n",
+        " 'eaattktnntrogheeivrj',\n",
+        " 'gaanthnjeteorhnniarp',\n",
+        " 'rlaealnpitnfnhroirpr',\n",
+        " 'faanorppeteevreniauv',\n",
+        " 'raaejanpetanfhrnisop',\n",
+        " 'gaarehrjntvaraneivep',\n",
+        " 'raaeuaopetalfnrnisip',\n",
+        " 'faaooeppetnearenihus',\n",
+        " 'gaanehrjnthrraneiaep',\n",
+        " 'raannalpethofnrniaep',\n",
+        " 'eaahtktnntaogheeisrj',\n",
+        " 'ftaaormpwtshnneoinen',\n",
+        " 'ftashanpwtnemreoieln',\n",
+        " 'ftashnapwtnenmeoiela',\n",
+        " 'faasoeppetnearenieus',\n",
+        " 'faaeoeppetsearenious',\n",
+        " 'farnorppepeevrendauv',\n",
+        " 'farnonrpepeehiendaua',\n",
+        " 'farnoeppepeearendsus',\n",
+        " 'gfrirhrjteearanrernp',\n",
+        " 'raoieaopneeafnreurep',\n",
+        " 'paoprhndeeeiartnufos',\n",
+        " 'paoprredeeeinstnufon',\n",
+        " 'faoeirnpeeaeihenusro',\n",
+        " 'raolhaepeenafrrnursp',\n",
+        " 'gaaahhrjestarannlisp',\n",
+        " 'rlrahalpittafnrohisp',\n",
+        " 'gaviehrjnvearaneorep',\n",
+        " 'raaoorapesneatrnlhuf',\n",
+        " 'flaoinrpisnorpeolhrt',\n",
+        " 'ptrlfondwtndhhtohrce',\n",
+        " 'pthafnhdwemdratolncn',\n",
+        " 'ftrhnaipwtartoeohsni',\n",
+        " 'rlaaniapissrefrolntr',\n",
+        " 'rlralaepitsnfrrohnrp',\n",
+        " 'rlraraepitsnfrrohnnp',\n",
+        " 'fthsranpwenpmreoledn',\n",
+        " 'fthnraepweapmseolidn',\n",
+        " 'plasinpdisnoretolert',\n",
+        " 'rlnaniepinfresroaptr',\n",
+        " 'faauirlpeslopnennird',\n",
+        " 'raaeuaepesalfrrnnsip',\n",
+        " 'flnnrrepinrtpseoatwd',\n",
+        " 'faaeuirpesalopennsir',\n",
+        " 'ptnocemdwnhesntoaeto',\n",
+        " 'raannaepesrofrrnnnep',\n",
+        " 'flanrrapisripmeonnod',\n",
+        " 'ftamrropwsnnpseonsnd',\n",
+        " 'plarinpdisnoretonnrt',\n",
+        " 'plnninpdineoretoasrt',\n",
+        " 'pleinpndisorertoortf',\n",
+        " 'ftehnrapwseapmeoolid',\n",
+        " 'fvaaoeppvteeareoinus',\n",
+        " 'raaeoaopstnefnrlirup',\n",
+        " 'fvaeoeppvtneareoirus',\n",
+        " 'grianhrjtesrranhrnnp',\n",
+        " 'fhpaarepertmnseliinn',\n",
+        " 'raotaanpseiefhrluenp',\n",
+        " 'rronhaepterafrrhunsp',\n",
+        " 'rrlealnptirfnhrhoppr',\n",
+        " 'fvaeoeppvereareonpus',\n",
+        " 'frlprlnptirpnhehoidr',\n",
+        " 'rvarajapvnetnfroeeio',\n",
+        " 'raaoahapseetafrlnuis',\n",
+        " 'frwrohnptopharehades',\n",
+        " 'rroeanhpthrfrarheppn',\n",
+        " 'ranelanpsrrifhrltpop',\n",
+        " 'rroeaanpthrsfrrhepnp',\n",
+        " 'gaoanhrjsnteranlhirp',\n",
+        " 'rrlajanptntnfhrhriop',\n",
+        " 'grlaehrjtntsranhriop',\n",
+        " 'eaotatknsnothgelhrir',\n",
+        " 'rrltornptnieahrhreuf',\n",
+        " 'rhliatnpenefhhrlrrpa',\n",
+        " 'faoionppsneerrelhrut',\n",
+        " 'raornaepsnaotnrlhfei',\n",
+        " 'faoeonppsnrerrelhput',\n",
+        " 'faoropnpsnperrelhdui',\n",
+        " 'raoaianpsnfotrrlhphi',\n",
+        " 'rhaanaspemfrtnrlnpni',\n",
+        " 'rrljasaptnntnfrhroie',\n",
+        " 'fhaprhnpemrparelnids',\n",
+        " 'frlposrptnrenpehriue',\n",
+        " 'paouinpdsnloretlhirt',\n",
+        " 'frliatnptnotwhehrhio',\n",
+        " 'frlwaohptnothaehraie',\n",
+        " 'rrliahaptnotafrhrhis',\n",
+        " 'fhawahnpemotarelnais',\n",
+        " 'raoeooapsnnertrlhrua',\n",
+        " 'paoiinpdsnooretlhhrt',\n",
+        " 'frliataptnoswtehrhno',\n",
+        " 'rrlnauaptnhtlfrhraii',\n",
+        " 'fhahirnpemaoprelnsrd',\n",
+        " 'fharaorpemnsapelnnne',\n",
+        " 'fhasrorpemnpanelnede',\n",
+        " 'fhatrmrpeswpnnelnods',\n",
+        " 'paalinpdssioretlnort',\n",
+        " 'rraoealptshrfnrhnepp',\n",
+        " 'fhnoeaepenarmselaepn',\n",
+        " 'paaoremdessnfntennnd',\n",
+        " 'paslinpdsnioretleort',\n",
+        " 'fhnirmrpeeopnnelsrds',\n",
+        " 'frnrailptentoiehsnir',\n",
+        " 'roajraapntnenfrhioee',\n",
+        " 'faailrepmtoinseniron',\n",
+        " 'foaeoeppntnearehirus',\n",
+        " 'glanohnjntrrrhnritap',\n",
+        " 'rlanoonpntrrehrritau',\n",
+        " 'goaeehrjntaaranhisep',\n",
+        " 'roaeuaapntalferhisip',\n",
+        " 'roaeeoapntaaefrhiseu',\n",
+        " 'flanrlepntrtiseritwo',\n",
+        " 'rlanhoopntraerrritsu',\n",
+        " 'faaapnrpmtsroneninie',\n",
+        " 'flaeonppntserreriout',\n",
+        " 'glhrranjnreathnrpefi',\n",
+        " 'flrrpnhpnperoaerdeie',\n",
+        " 'flrwrohpnpothaerdahe',\n",
+        " 'rlaninnpnfreohrrptre',\n",
+        " 'forosimpspaoenenderu',\n",
+        " 'farnrlepmpriisendnoo',\n",
+        " 'goratahjnetonrnheire',\n",
+        " 'raoraenpmeatsrrnufio',\n",
+        " 'rlrejanpnernfhrrepop',\n",
+        " 'gorhraejneratanhepfi',\n",
+        " 'glrhranjnerathnrepfi',\n",
+        " 'rloanenpnefrrhrruptp',\n",
+        " 'rlrjahapnentafrreois',\n",
+        " 'paoprhndmeeiartnufos',\n",
+        " 'rorejaepneanfrrhesop',\n",
+        " 'flonprnpnerrpherutid',\n",
+        " 'rloneaepnehafrrruaep',\n",
+        " 'foapianpnsrotrehlihi',\n",
+        " 'foapirnpnsroprehlihd',\n",
+        " 'flrliinpntioeherhorr',\n",
+        " 'flrohatpnthatwerhesi',\n",
+        " 'rlrohaepnthafrrrhesp',\n",
+        " 'rahnhaepmerafrrnlnsp',\n",
+        " 'rlrhnaepntaofrrrhsep',\n",
+        " 'rlrsoaepntnhfrrrheep',\n",
+        " 'raaoraepmsenfrrnnunp',\n",
+        " 'raonnrapsroretrnaene',\n",
+        " 'raiuaanpselfmrrnripn',\n",
+        " 'faieoeppseaearenreus',\n",
+        " 'faraoeppspeearendnus',\n",
+        " 'falaninpsitrorenoitr',\n",
+        " 'fatnrirpswrtopenonhh',\n",
+        " 'paerhomdstneantnvnle',\n",
+        " 'gantahrjseierannaenp',\n",
+        " 'raetlalpsniifnrnreop',\n",
+        " 'raetlanpsniifrrnreop',\n",
+        " 'faoirhapsaenemenernl',\n",
+        " 'raoeaanpshrfmrrneppn',\n",
+        " 'ranalalpsrfntirntpri',\n",
+        " 'fanpaoepsrrserentilu',\n",
+        " 'fanuirlpsrlopnentird',\n",
+        " 'faatonrpsmierienneun',\n",
+        " 'pallinpdsnioretnrort',\n",
+        " 'paltropdsnwthetnrohe',\n",
+        " 'galnaohjsnrtrrnnrtia',\n",
+        " 'paaoinedsmhorftnnern',\n",
+        " 'fnonisrpnssonpeancre',\n",
+        " 'ranotaapsreiefrnnuen',\n",
+        " 'famriaopsnnothensnri',\n",
+        " 'famriropsnnopsensnrd',\n",
+        " 'pnnsiopdnsoohetacrre',\n",
+        " 'ratalrnptositnrirnoh',\n",
+        " 'ealktvanttgovseihjro',\n",
+        " 'gaoharajtrrnelniapee',\n",
+        " 'gaorahfjtrenrtniaeep',\n",
+        " 'raooathptreeuariaunr',\n",
+        " 'raorrhtptrntanrianhs',\n",
+        " 'faoatolpteeuaeeiunre',\n",
+        " 'failnraptoirtleironh',\n",
+        " 'raonhanpterafrriutsp',\n",
+        " 'rarojaaptennsfriehol',\n",
+        " 'raolnanptenrfhriurtp',\n",
+        " 'failthoptonheneirral',\n",
+        " 'faionoiptosarneirnis',\n",
+        " 'faorrasptenilceiunoe',\n",
+        " 'fatlvnnptwivnseioooa',\n",
+        " 'gaaavlajtenvcfnineoe',\n",
+        " 'ralnahnptirfasrionps',\n",
+        " 'falmireptinonseiosrn',\n",
+        " 'gaahhlajtearnfninspr',\n",
+        " 'ranoafrpteeedariaunc',\n",
+        " 'ranrnnapteehofriaeae',\n",
+        " 'ranonfcptrrtdhritsnc',\n",
+        " 'raeooasptarelcrisaue',\n",
+        " 'raeoeroptarsehrisaoe',\n",
+        " 'raoenuvptnnohurihrec',\n",
+        " 'raoeluvptnnihurihroc',\n",
+        " 'galavlajtnmvcfnirnoe',\n",
+        " 'raahnanptmaofrrinsep',\n",
+        " 'ganorctjthrehwniaaeo',\n",
+        " 'fanroanpthiesreiaoul',\n",
+        " 'ganhhnajtrarrfninspt',\n",
+        " 'ranhaoyptrafherinspe',\n",
+        " 'fahattmptacwuneiseor',\n",
+        " 'gahehfhjtarrtonisepo',\n",
+        " 'gahehlajtarrnfnisepr',\n",
+        " 'fanlnifptnisoteiaocr',\n",
+        " 'faamriaptsnnoceinsnr',\n",
+        " 'raalnripftnhtorpirah',\n",
+        " 'ghanrtajrtheonnpiaer',\n",
+        " 'raahnylpftaoenrpisen',\n",
+        " 'raarnyopftnoenrpinen',\n",
+        " 'gharaaajrtnsmfnpinnn',\n",
+        " 'raaraoypftnsserpinnn',\n",
+        " 'ghtanaojromntnnprnai',\n",
+        " 'ghrosefjraoyttnpfgdt',\n",
+        " 'ghrraocjraamdhnpflns',\n",
+        " 'oykrtcsgegaiatfnjfel',\n",
+        " 'ekhrtulngraiheejpfec',\n",
+        " 'rarstolpfpyuherpdere',\n",
+        " 'fryltolppeiuaeednore',\n",
+        " 'ghaatoojrnfsdrnpepys',\n",
+        " 'gharooojrnerdrnpeeas',\n",
+        " 'raaoithpfeeeuarpnurr',\n",
+        " 'raafontpfesrturpnrsn',\n",
+        " 'frlanirppisroaedoltr',\n",
+        " 'friintnppooruhedhrtr',\n",
+        " 'raeirolpfaeeherpsree',\n",
+        " 'frawkrrppmogvnednajv',\n",
+        " 'ghonavhjrnrtuonphtir',\n",
+        " 'frloiroppnnaeaedrhae',\n",
+        " 'raankrspfmaghtrpnije',\n",
+        " 'frosanappsnenmedneea',\n",
+        " 'rahrinopfaeeoorpsere',\n",
+        " 'frsyoteppnesugedennr',\n",
+        " 'raeniaepfsrotarpothi',\n",
+        " 'granoahjethrsrneiaal',\n",
+        " 'fiihrhepoeaeeaerrsel',\n",
+        " 'roeseooperytonrupevg',\n",
+        " 'roeaathperfeuaruppnr',\n",
+        " 'grtaooujehsrdhnernas',\n",
+        " 'roaaeoopeferonrupnpg',\n",
+        " 'rraaesopefnrmhrepepn',\n",
+        " 'rraeesspefarmnrepspn',\n",
+        " 'roaliyfpefneetruprrn',\n",
+        " 'roaaionpefmeohrupnrg',\n",
+        " 'fopalrrpersneheuinre',\n",
+        " 'frainsopeneomaeeeren',\n",
+        " 'roaaranpeefvterunpvi',\n",
+        " 'filanvspoieevyeronao',\n",
+        " 'fileoonpoindoherorsg',\n",
+        " 'roatsecpenrrteruevht',\n",
+        " 'roahalrpeeafnprunspr',\n",
+        " 'foahroopeeaidoeunsos',\n",
+        " 'roahlaipeeanthrunsri',\n",
+        " 'roeaasapeatemirusinn',\n",
+        " 'finaltnportiuhertior',\n",
+        " 'finalthportiuaertior',\n",
+        " 'roeaaswpeatemfrusinn',\n",
+        " 'etravehnuvtuhrervirk',\n",
+        " 'greavlrjeatutanesirh',\n",
+        " 'rrejaorpeanfnpresoph',\n",
+        " 'rresserpeamnfpresntd',\n",
+        " 'fonsetopermgooeutnhd',\n",
+        " 'fiotdeopohuotnererot',\n",
+        " 'fintdkfporuogtertroj',\n",
+        " 'roeaavtpeaeturrusnir',\n",
+        " 'rolaaatpenftmrrurpin',\n",
+        " 'grohtaajenrotnnehpri',\n",
+        " 'rooataepenfisnruhpel',\n",
+        " 'fiargfipompjteerndnr',\n",
+        " 'fiargvapompjvierndno',\n",
+        " 'rolahsepenfaytrurpsd',\n",
+        " 'rolasaapenfnterurpei',\n",
+        " 'rolasrhpenfnterurpeh',\n",
+        " 'filrsroponpntserrdeh',\n",
+        " 'filinrnponorpherrhtd',\n",
+        " 'rolesatpennntarurrei',\n",
+        " 'ronoaafperrtetrunain',\n",
+        " 'fonrraeperipmseunodn',\n",
+        " 'fonrnrhperirpaeunotd',\n",
+        " 'fonrharperiateeunosi',\n",
+        " 'ronnstrperhcaprunaei',\n",
+        " 'rosaorfpenfgtsruepfh',\n",
+        " 'fonarropeetneaeusine',\n",
+        " 'finarrhpoetneeersine',\n",
+        " 'ronantipeetsuirusicr',\n",
+        " 'gaattirjntotoaneirsr',\n",
+        " 'raajvaepetnostrniool',\n",
+        " 'flaplerpitrntveoiirt',\n",
+        " 'faareoopntvaeaeeiveu',\n",
+        " 'raaveftpntoutsreiolo',\n",
+        " 'rlatroopithionroiatg',\n",
+        " 'faavetopetoluaenioor',\n",
+        " 'raannalpethofnrniaep',\n",
+        " 'raannanpetrofhrninep',\n",
+        " 'faanrofpetrieteninou',\n",
+        " 'rlahoelpitartnroisat',\n",
+        " 'faahgtepetajugenisnr',\n",
+        " 'gaahehfjntarrtneisep',\n",
+        " 'rlahnanpitarfrroistp',\n",
+        " 'rlahiyepitahearoisin',\n",
+        " 'rlahiylpitahenroisin',\n",
+        " 'rlariyopitnhenroinin',\n",
+        " 'faahntopetatuaenisnr',\n",
+        " 'ftahnrspwtattleoisnh',\n",
+        " 'rlarsetpitnntaroinet',\n",
+        " 'flaarimpitsnoneoinnr',\n",
+        " 'gaannhajeterrfnnisnp',\n",
+        " 'raartsopnfpsmhrepdyn',\n",
+        " 'farrntopepatuaendlnr',\n",
+        " 'farnonrpepeehiendaua',\n",
+        " 'farnroopephieoendaou',\n",
+        " 'raahinopefaeoornpsre',\n",
+        " 'raaaotfpefieitrnpeue',\n",
+        " 'flrnriepipenoneodsnr',\n",
+        " 'rlannaapifenmtropsan',\n",
+        " 'faoiesopneeamaeeuren',\n",
+        " 'flienoopionhdoeorras',\n",
+        " 'flinhoopioradoeortss',\n",
+        " 'fliseerpiolstveorlst',\n",
+        " 'fliteoopiohsoneorasg',\n",
+        " 'fliteonpiohsoheorasg',\n",
+        " 'plilhrvdionaeutorrse',\n",
+        " 'favhhtopevekuaenosgr',\n",
+        " 'plavdrvdisveeutologe',\n",
+        " 'flrvtoopitvcdoeohoas',\n",
+        " 'flrseorpitledaeohlds',\n",
+        " 'flrseorpitledaeohlds',\n",
+        " 'plavervdisoeeutolode',\n",
+        " 'rlaoanipisnfrerolhpt',\n",
+        " 'flrliefpitnorteohrrp',\n",
+        " 'pthafnhdwemdratolncn',\n",
+        " 'planervdishgeutolahe',\n",
+        " 'ftrhnaipwtartoeohsni',\n",
+        " 'rlrsalrpitnfnprohepr',\n",
+        " 'faatctopesieuaennehr',\n",
+        " 'ftnronfpwnphsteoadec',\n",
+        " 'flnierhpinoreaeoarpe',\n",
+        " 'paaeuivdesaloutnnsir',\n",
+        " 'raalofrpesnsdprnnrnc',\n",
+        " 'flaadoopismedoeonngs',\n",
+        " 'flamrrnpisnipreonsod',\n",
+        " 'ftamrropwsnnpseonsnd',\n",
+        " 'ftardkapwsnogmeonnoj',\n",
+        " 'ftnndkopwnsogneoacoj',\n",
+        " 'rletaropishtiorooait',\n",
+        " 'flemrropisnipoeoosod',\n",
+        " 'grianeajtesrgfnhrnnh',\n",
+        " 'rajtvsvpsnivcurloeoe',\n",
+        " 'frpjoonptrndohehiosg',\n",
+        " 'prpraordteissvthfoln',\n",
+        " 'prinhovdtoraeuthrnsu',\n",
+        " 'rrlranoptiatarrhofii',\n",
+        " 'palrnrvdsithtutlowah',\n",
+        " 'raianhrpsofraprlhpts',\n",
+        " 'rrorarrpthatvnrhefiv',\n",
+        " 'fveeaoopvareeaeospnu',\n",
+        " 'ranhaovpsrateurltsiu',\n",
+        " 'fhafyoipeeseneelernh',\n",
+        " 'rrhfaiuptetiehrhlrhr',\n",
+        " 'rrvdapoptvoceorhooef',\n",
+        " 'prvgovgdtvheuftholur',\n",
+        " 'frvgsaeptvhrcaeholhe',\n",
+        " 'rhahirepesaiptrllsed',\n",
+        " 'rrlajaoptntnfnrhriop',\n",
+        " 'faoaponpsntrerelhiiu',\n",
+        " 'grlthaojtnortnnhrrpi',\n",
+        " 'rrliaatptneflnrhrrpe',\n",
+        " 'rhliatnpenefhhrlrrpa',\n",
+        " 'rrlaaotptnftsrrhrpin',\n",
+        " 'gaoherfjsnrrptnlhped',\n",
+        " 'frlrlhlptnpireehrdop',\n",
+        " 'raoaahepsnfeehrlhpns',\n",
+        " 'fharwanpemposhelndal',\n",
+        " 'raoanaipsnfrtorlhpti',\n",
+        " 'rhaanhrpemfraprlnpns',\n",
+        " 'faormropespnnneendsn',\n",
+        " 'rrlahhfptnfaesrhrpsl',\n",
+        " 'rrlasaoptnfntsrhrpei',\n",
+        " 'fharshepempnraelndep',\n",
+        " 'fhaphsrpemdrmnelntpn',\n",
+        " 'fhaproipemrpneelnidh',\n",
+        " 'prlrlfadtntidlthrwoc',\n",
+        " 'frliatfptnotwtehrhio',\n",
+        " 'frlirdfptnopetehrhdg',\n",
+        " 'frlitrnptnowphehrhod',\n",
+        " 'frlwvyaptnovdcehraoo',\n",
+        " 'rrlnauaptnhtlfrhraii',\n",
+        " 'rhansaapemrnftrlnnep',\n",
+        " 'frlhorgptnaephehrsud',\n",
+        " 'fhahscepemayaaelnsdl',\n",
+        " 'rhasathpemntaorlneii',\n",
+        " 'rhnhaarperafmprlnspn',\n",
+        " 'rraoataptsrtnnrhnair',\n",
+        " 'fratornptswhprehnoed',\n",
+        " 'faaneoopssrreaelntpu',\n",
+        " 'fraoraiptshntoehneni',\n",
+        " 'fhaanaspesmrerelnnne',\n",
+        " 'fhaarrhpesmnprelnnnd',\n",
+        " 'frnplaopterissehsiol',\n",
+        " 'frnrhfopteiesoehsolr',\n",
+        " 'frnratrpteisnhehsolr',\n",
+        " 'raaohaapmtracnrniase',\n",
+        " 'gaaoradjmtrnsenniann',\n",
+        " 'goaeorojntareanhisae',\n",
+        " 'foaeeoopntaaeaehiseu',\n",
+        " 'foaeuaipntaleoehisin',\n",
+        " 'raasoalpmtoefnrnirup',\n",
+        " 'glasntajntoewfnrirto',\n",
+        " 'raasaeopmtoatornircv',\n",
+        " 'gohieaajnreanfnhpree',\n",
+        " 'rlaiuarpnfelearrprin',\n",
+        " 'gohraocjnramdhnhpfns',\n",
+        " 'glhraosjnramdtnrpfns',\n",
+        " 'gohassujnrfyrhnhppeh',\n",
+        " 'rlarshtpnfpyerrrpdel',\n",
+        " 'gohytuvjnreohunhpndc',\n",
+        " 'roakfrfpnfgttsrhpjuh',\n",
+        " 'flrkrolpnpgeaeerdjee',\n",
+        " 'gohyahfjnrenetnhpnes',\n",
+        " 'rlakserpnfgrtvrrpjht',\n",
+        " 'faronvlpmpotvcendgno',\n",
+        " 'roaoooipsfosrnrnpgns',\n",
+        " 'flrraropnpaaeaerdlce',\n",
+        " 'rlaninrpnfreoarrptre',\n",
+        " 'rlanrnopnfratdrrptln',\n",
+        " 'rlansorpnfroeprrptru',\n",
+        " 'farosiopmphoooenderr',\n",
+        " 'farlahepmposraendsnp',\n",
+        " 'flrnriypnphioeerdaoh',\n",
+        " 'flrhnropnpateaerdsne',\n",
+        " 'farrshdpmpnneeendnel',\n",
+        " 'fliihrhpnoeaeeerrrse',\n",
+        " 'floposfpnerdyteruise',\n",
+        " 'pafnrofdmdrtettncnwu',\n",
+        " 'plinurvdnohleutrraie',\n",
+        " 'rlosnerpneoetprrurtv',\n",
+        " 'faisafopmooasoenrrcr',\n",
+        " 'flrohirpnthaoperhesr',\n",
+        " 'plrohivdnthaoutrhesr',\n",
+        " 'fahnhtipmeraioenlnse',\n",
+        " 'fahnhirpmeraopenlnsr',\n",
+        " 'flrhrorpntaieperhsou',\n",
+        " 'plrsoivdntnhoutrheer',\n",
+        " 'fahsnirpmenropenlenr',\n",
+        " 'fahnsirpmeaoopenlirr',\n",
+        " 'foniniapsnesolenarcr',\n",
+        " 'fanpalfpmnrtitenaiio',\n",
+        " 'paairovdmsoneutnnrnu',\n",
+        " 'paafroadmsdneetnncnu',\n",
+        " 'flaitirpnsohopernhar',\n",
+        " 'raonnrapsroretrnaene',\n",
+        " 'faesltopsryiuaenpeor',\n",
+        " 'faraltopspeiuaendnor',\n",
+        " 'fnponsopnresmseaiucn',\n",
+        " 'fneisaapnuontmealrei',\n",
+        " 'fatiatnpswemneenornr',\n",
+        " 'gaaetctjsntiasnnevel',\n",
+        " 'faoirirpshenotenernr',\n",
+        " 'faneoogpsrreafentpue',\n",
+        " 'ranalrapsrfnpcrntprd',\n",
+        " 'faoooynpshadereneesn',\n",
+        " 'pallrhpdsnitirtnrohi',\n",
+        " 'faodoynpssederenngsn',\n",
+        " 'rnaovirpnmsviprannoe',\n",
+        " 'faorrrapssnipmennnod',\n",
+        " 'faorrrmpssnipnennnod',\n",
+        " 'ranaaajpsrfetnrnnpni',\n",
+        " 'panfgrddsrdjtetnncnh',\n",
+        " 'famriaopsnnothensnri',\n",
+        " 'fnnilrfpnsoipteacrod',\n",
+        " 'fnstokmpnocdgnearasj',\n",
+        " 'gaohsaojtrrlerniapln',\n",
+        " 'raonnafptrsnctriacae',\n",
+        " 'raonhvopterauoriutsr',\n",
+        " 'garortajtenpufniehrr',\n",
+        " 'raolnanptenrfhriurtp',\n",
+        " 'raauafrptelntvrinieo',\n",
+        " 'gaaeelsjtntttmnievth',\n",
+        " 'falaverptinveeeioeod',\n",
+        " 'ralnahnptirfasrionps',\n",
+        " 'gaanrrfjtnhepdnieaer',\n",
+        " 'raanohfptereadrinnus',\n",
+        " 'faeiltoptnoiureirror',\n",
+        " 'raeonftptartdsrissnc',\n",
+        " 'gaeororjtareaanisaee',\n",
+        " 'ranhusfptrahndritsct',\n",
+        " 'ranhusfptrahndritsct',\n",
+        " 'ranhusiptrahnhritsct',\n",
+        " 'raaaskaptmfngnrinpej',\n",
+        " 'raaieflptmostnrinhoo',\n",
+        " 'ranhaoyptrafherinspe',\n",
+        " 'fahattmptacwuneiseor',\n",
+        " 'faratsnptncwmseineon',\n",
+        " 'ranaotfptsfgntricpfr',\n",
+        " 'faroparptnerseeinuin',\n",
+        " 'rahiknoptahgrorisijt',\n",
+        " 'rahionoptahorerisigt',\n",
+        " 'raalreyptsinterinonv',\n",
+        " 'raaaotfpftmgntrpinfr',\n",
+        " 'ghaheotjrtaroanpiseg',\n",
+        " 'ghrosefjraoyttnpfgdt',\n",
+        " 'ghrysorjraeyrnnpfnds',\n",
+        " 'fryltolppeiuaeednore',\n",
+        " 'friintnppooruhedhrtr',\n",
+        " 'frnaplkpprsrngedtnir',\n",
+        " 'ghorreajrnaeatnphfes',\n",
+        " 'raliyrdpfnoevorprhnv',\n",
+        " 'ghlnavtjrnrturnprtir',\n",
+        " 'frloknippnngsoedrhjc',\n",
+        " 'frarilrppmnoiaednnro',\n",
+        " 'frahiltppmaoiuednsro',\n",
+        " 'frarilsppmnoimednnro',\n",
+        " 'frarilsppmnoimednnro',\n",
+        " 'frsninsppnsoamedtcri',\n",
+        " 'ranhrhrpfratehrpnshl',\n",
+        " 'frhonrrppaerieedsuno',\n",
+        " 'frhrkaippangmoedsnjn',\n",
+        " 'grtvealjeovattnerosi',\n",
+        " 'rrejahtpernfaurepops',\n",
+        " 'poprhredeeiaeatufose',\n",
+        " 'pipaaoedoesmeatrfnnu',\n",
+        " 'rraoltrpeneeapreeusi',\n",
+        " 'foaigsrpeeofyaeunrtd',\n",
+        " 'pftterrddwulevtcoroe',\n",
+        " 'foafrripeesanoeunrln',\n",
+        " 'foahroopeeaidoeunsos',\n",
+        " 'roeaasapeatemirusinn',\n",
+        " 'finaltnportiuhertior',\n",
+        " 'greavlsjeatutmnesirh',\n",
+        " 'roeotcspeadsemrussyt',\n",
+        " 'fonsetopermgooeutnhd',\n",
+        " 'rrevkdopeaugtrresrjo',\n",
+        " 'grohtsojenroyonehprd',\n",
+        " 'frlrrolpenppeeeerdru',\n",
+        " 'filrthsponphenerrdal',\n",
+        " 'roaasarpemfntnrunpei',\n",
+        " 'filinrnponorpherrhtd',\n",
+        " 'fonrharperiateeunosi',\n",
+        " 'fomrstopeninuseusoer',\n",
+        " 'pirnfoldonsdhetrncce',\n",
+        " 'ronaenopeefrrorusppt',\n",
+        " 'raajafapetnftnrniopr',\n",
+        " 'raajaafpetnfstrniopl',\n",
+        " 'raanntapetroosrniner',\n",
+        " 'rlahtrupitaothroisrh',\n",
+        " 'faahgtepetajugenisnr',\n",
+        " 'rlahnanpitarfrroistp',\n",
+        " 'gaahgovjetahounnislg',\n",
+        " 'gaahgotjetahoannislg',\n",
+        " 'rlaraeypitnsteroinnv',\n",
+        " 'flaarimpitsnoneoinnr',\n",
+        " 'ftashaopwtnemgeoieln',\n",
+        " 'raaejaspnfrnemreppon',\n",
+        " 'raaretrpefphuarnpdkr',\n",
+        " 'farnrorpeprieaendnou',\n",
+        " 'farnrltpephiiuendaoo',\n",
+        " 'flrnirrpipeoneeodsrn',\n",
+        " 'flienorpionrdaeorrns',\n",
+        " 'farrinipneveooeeevre',\n",
+        " 'flinhoopioradoeortss',\n",
+        " 'plapprrdiserevtolfie',\n",
+        " 'flahagrpisatheeolsil',\n",
+        " 'flrhifapitaosneohsrr',\n",
+        " 'flrsrlipitnpnoeohedr',\n",
+        " 'gaaorocjesrnoannnans',\n",
+        " 'flarpropispdeoeonrte',\n",
+        " 'rlariyspisnheyronnin',\n",
+        " 'rleerucpistpheroovdc',\n",
+        " 'flenrrypisaipeeooiod',\n",
+        " 'fapjrrrpsrnehaelioee',\n",
+        " 'frlrahoptitnenehowes',\n",
+        " 'raaloofpseidrtrlnosa',\n",
+        " 'fhtfhcopewteeoelorsi',\n",
+        " 'frlfhnhptitearehorsi',\n",
+        " 'palfacfdsiteedtlorei',\n",
+        " 'frhfodsptesoemehlrgg',\n",
+        " 'prhttaedtewuisthlorh',\n",
+        " 'rrhfaiuptetiehrhlrhr',\n",
+        " 'rrvitaaptvhicnrhoiee',\n",
+        " 'prviroadtvhienthoiou',\n",
+        " 'frvgnhaptvhoeneholes',\n",
+        " 'fhvnecrpevssanelocsl',\n",
+        " 'phvnstidevslaotlocli',\n",
+        " 'paahnuadesarrmtelsii',\n",
+        " 'gaohaatjsnrtmvnlhpin',\n",
+        " 'grlhtrojtnroprnhrprd',\n",
+        " 'grlhtutjtnrirrnhrpei',\n",
+        " 'rrlailvptnfeivrhrpro',\n",
+        " 'faorphrpsnpreeelhdil',\n",
+        " 'faoropnpsnperrelhdui',\n",
+        " 'faormropespnnneendsn',\n",
+        " 'rhaansrpemfrnprlnpne',\n",
+        " 'fharnsapemprneelndne',\n",
+        " 'rhaahanpemfatrrlnpsi',\n",
+        " 'fharhhapemparnelndsp',\n",
+        " 'frlrsaiptnpneoehrdee',\n",
+        " 'rhaashlpemfnenrlnpes',\n",
+        " 'rrlfksdptnpgmorhrejn',\n",
+        " 'frlprosptnrpsmehridn',\n",
+        " 'prlpisodtneonethrfre',\n",
+        " 'frlpvdnptnrvotehrioo',\n",
+        " 'rrliahiptnotahrhrhis',\n",
+        " 'frlwvyaptnovdcehraoo',\n",
+        " 'rhansaapemrnftrlnnep',\n",
+        " 'pharesidemnfnotlnnde',\n",
+        " 'rrlhofoptnaepdrhrsue',\n",
+        " 'fhahiptpemaoduelnsrt',\n",
+        " 'grlsattjtnntahnhreii',\n",
+        " 'grlsattjtnntahnhreii',\n",
+        " 'frneofoptrgetdehnhur',\n",
+        " 'fhnhraiperapmoelnsdn',\n",
+        " 'pratiahdtswosithnohl',\n",
+        " 'fratornptswhprehnoed',\n",
+        " 'rraoealptshrfnrhnepp',\n",
+        " 'rhaaniupesmrerrlnnnr',\n",
+        " 'fhaanaspesmrerelnnne',\n",
+        " 'roajanfpntnsrtrhiolt',\n",
+        " 'goanlfojntentanhirro',\n",
+        " 'glanohnjntrrrhnritap',\n",
+        " 'rlanoonpntrrehrritau',\n",
+        " 'flaorevpnthtnveriewe',\n",
+        " 'faaoranpmthtlneniewe',\n",
+        " 'rlanuvrpntrluarritir',\n",
+        " 'rlahaaopntafmhrrispn',\n",
+        " 'gohrystjnraeyunhpfnd',\n",
+        " 'glhryssjnraeymnrpfnd',\n",
+        " 'elkatoenngfirgerjpes',\n",
+        " 'gohyfuvjnreshunhpnrc',\n",
+        " 'faronnapmpohteendgan',\n",
+        " 'forynhepsperatendnns',\n",
+        " 'flrrpnhpnperoaerdeie',\n",
+        " 'roaeinepnfaeonrhpsre',\n",
+        " 'rlannyrpnfhoehrrpaen',\n",
+        " 'fornohfpspsgltendcfc',\n",
+        " 'glroanejnerthgnreaia',\n",
+        " 'gothrsrjnurayenhrpfd',\n",
+        " 'ploprhrdneeiaetrufos',\n",
+        " 'faopohspmerdomenuiso',\n",
+        " 'failftrpmoisuaenrorr',\n",
+        " 'faieerlpmolsanenrosl',\n",
+        " 'fainuorpmorldaenrnis',\n",
+        " 'foisrropsooaeoenrrte',\n",
+        " 'plisaafdnooaedtrrrcn',\n",
+        " 'fahinyopmeordrenlrno',\n",
+        " 'fahnhirpmeraopenlnsr',\n",
+        " 'foairoypssondeennrns',\n",
+        " 'roamrsfpssnnytrnnsnd',\n",
+        " 'faerylipsaheioenseno',\n",
+        " 'faaihnypsmoendennrla',\n",
+        " 'faaoiropsmhonoennern',\n",
+        " 'raarnaspsmnofyrnnnep',\n",
+        " 'ranaaajpsrfetnrnnpni',\n",
+        " 'pnnftsndnsdwmttaccon',\n",
+        " 'pnnhtsndnslamttaccin',\n",
+        " 'fnstorypnoceheearaue',\n",
+        " 'gaorasgjtrenmhniaeen',\n",
+        " 'raonhvopterauoriutsr',\n",
+        " 'garnuecjtehhtanieacv',\n",
+        " 'faeiltoptnoiureirror',\n",
+        " 'gaeororjtareaanisaee',\n",
+        " 'ranhusfptrahndritsct',\n",
+        " 'faloceeptnsaaseirnle',\n",
+        " 'raheltaptatiuiristor',\n",
+        " 'rahelfrptatidnristoc',\n",
+        " 'raaalonpftmiohrpinog',\n",
+        " 'raahnylpftaoenrpisen',\n",
+        " 'raahnoapftaoomrpiseg',\n",
+        " 'raaoisrpfeeemnrpnurn',\n",
+        " 'friintrppooruvedhrtr',\n",
+        " 'frahiltppmaoiuednsro',\n",
+        " 'frahiltppmaoiuednsro',\n",
+        " 'frarilsppmnoimednnro',\n",
+        " 'frsninsppnsoamedtcri',\n",
+        " 'frhonrrppaerieedsuno',\n",
+        " 'fiirohrpoeneaeerrnus',\n",
+        " 'roaliyrpefneevruprrn',\n",
+        " 'foadyhepeloeraeueonp',\n",
+        " 'foeaasepeatemgeusinn',\n",
+        " 'foeaastpeatemceusinn',\n",
+        " 'rreavespeatuhmresirk',\n",
+        " 'fonprlsperrpnmeutidr',\n",
+        " 'filrtovponphsverrdan',\n",
+        " 'gaantcrjetevasnniaul',\n",
+        " 'rlanvrapitruanroitrl',\n",
+        " 'raarvylpntvueireivrn',\n",
+        " 'raanntapetroosrniner',\n",
+        " 'gaahoaujetagernnisfe',\n",
+        " 'rlahiylpitahenroisin',\n",
+        " 'ftashnapwtnenmeoiela',\n",
+        " 'rlaneynpitatehroiivn',\n",
+        " 'raaejyfpnfrnetreppon',\n",
+        " 'farnrlspepriimendnoo',\n",
+        " 'flientrpionhuheorrar',\n",
+        " 'flaahcnpistaaseolisl',\n",
+        " 'gaavttajesvaiennloie',\n",
+        " 'flareoepispndaeonres',\n",
+        " 'fapjrrrpsrnehaelioee',\n",
+        " 'rrlailvptnfeivrhrpro',\n",
+        " 'rrlaponptnfdrtrhrpts',\n",
+        " 'faorgropsnpjeaelhdne',\n",
+        " 'fharroapemppnselndrh',\n",
+        " 'rhaansrpemfrnprlnpne',\n",
+        " 'rhaahanpemfatrrlnpsi',\n",
+        " 'fhaphthpemdruaelntpr',\n",
+        " 'prlhrofdtnaisdthrson',\n",
+        " 'phahfnedemadrgtlnscn',\n",
+        " 'paorafndesnsdstennnc',\n",
+        " 'ransreopshnetdrlatev',\n",
+        " 'frneofoptrgetdehnhur',\n",
+        " 'fhnaorepenmapselaned',\n",
+        " 'rhaaniupesmrerrlnnnr',\n",
+        " 'rhnraudpeenmrorlsnni',\n",
+        " 'rlanoonpntrrehrritau',\n",
+        " 'rlanoonpntrrehrritau',\n",
+        " 'foanpospntrrelehitiu',\n",
+        " 'rlanuvrpntrluarritir',\n",
+        " 'roakfrfpnfgttsrhpjuh',\n",
+        " 'gohyfuvjnreshunhpnrc',\n",
+        " 'gohyahfjnrenetnhpnes',\n",
+        " 'gohyahfjnrenetnhpnes',\n",
+        " 'forynhepsperatendnns',\n",
+        " 'farrlnopmpacooendlee',\n",
+        " 'farlahepmposraendsnp',\n",
+        " 'glroanejnerthgnreaia',\n",
+        " 'rooaeeapnefarerhupsp',\n",
+        " 'gotnfecjnuedranhrrcp',\n",
+        " 'flinurrpnohleherraie',\n",
+        " 'fairoffpmonestenrnur',\n",
+        " 'flohdydpneaoeeeruson',\n",
+        " 'ponfnradsndspstnaccr',\n",
+        " 'roamrsfpssnnytrnnsnd',\n",
+        " 'roamrsfpssnnytrnnsnd',\n",
+        " 'faeryltpsaheiwenseno',\n",
+        " 'fartdrypsnneedennrge',\n",
+        " 'fartdonpsnnedsennrgs',\n",
+        " 'fnstorypnoceheearaue',\n",
+        " 'raalfhspteidcmrinoch',\n",
+        " 'gaanrfijtnheponieaee',\n",
+        " 'fanhusiptrahnoeitsct',\n",
+        " 'frahiltppmaoiuednsro',\n",
+        " 'rahrnnopfaerodrpsene',\n",
+        " 'roaliyrpefneevruprrn',\n",
+        " 'foailsopeeoeyoeunrsd',\n",
+        " 'roeavtspeatusmrusiry',\n",
+        " 'grohosujenrryhnehpad',\n",
+        " 'frlrrolpenppeeeerdru',\n",
+        " 'rooasahpenflmeruhpln',\n",
+        " 'gaanhfejnterttneirpr',\n",
+        " 'raajafapetnftnrniopr',\n",
+        " 'raarvylpntvueireivrn',\n",
+        " 'gartptfjnerdwtneevto',\n",
+        " 'flientrpionhuheorrar',\n",
+        " 'flareoepispndaeonres',\n",
+        " 'fharohepempnlaelndhc',\n",
+        " 'paneoafdshgeedtlahun',\n",
+        " 'rlanoonpntrrehrritau',\n",
+        " 'raarcvapmfpevsrnpdho',\n",
+        " 'rlarnerpnfarrprrplie',\n",
+        " 'flinurrpnohleherraie',\n",
+        " 'fahoroopmeannoenlenh',\n",
+        " 'raallrmpftnianrpirol',\n",
+        " 'rlanvrapitruanroitrl',\n",
+        " 'faonpfcpeeedtaenuatr',\n",
+        " 'raallrmpftnianrpirol']"
+       ]
+      }
+     ],
+     "prompt_number": 39
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[w for w in hinted_keywords if cadenus_decipher(first_chunk, w, keycolumn).startswith('phaseseven')]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 40,
+       "text": [
+        "[]"
+       ]
+      }
+     ],
+     "prompt_number": 40
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def cadenus_break_worker(message, keyword, keycolumn, fitness):\n",
+      "    message_chunks = chunks(message, 175)\n",
+      "    plaintext = ''.join(cadenus_decipher(c, keyword, keycolumn) for c in message_chunks)\n",
+      "    fit = fitness(plaintext)\n",
+      "    return (keyword, keycolumn), fit"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 41
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def cadenus_break(message, words=keywords, fitness=Pbigrams):\n",
+      "    c = make_cadenus_keycolumn(reverse=True)\n",
+      "    results = starmap(cadenus_break_worker, [(message, \n",
+      "                                              w, \n",
+      "                                              make_cadenus_keycolumn(doubled_letters='vw', start=s, reverse=r), \n",
+      "                                              fitness)\n",
+      "                               for w in words for s in string.ascii_lowercase for r in [True, False]])\n",
+      "    # return list(results)\n",
+      "    return max(results, key=lambda k: k[1])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 42
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "key8b, fitness = cadenus_break(c8bl, words=hinted_keywords, fitness=Ptrigrams)\n",
+      "key8b, fitness"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 43,
+       "text": [
+        "(('finalist',\n",
+        "  {'l': 20,\n",
+        "   'u': 11,\n",
+        "   'p': 16,\n",
+        "   'q': 15,\n",
+        "   'j': 22,\n",
+        "   'm': 19,\n",
+        "   'f': 1,\n",
+        "   'r': 14,\n",
+        "   'b': 5,\n",
+        "   'v': 10,\n",
+        "   'e': 2,\n",
+        "   'x': 9,\n",
+        "   'z': 7,\n",
+        "   'i': 23,\n",
+        "   'k': 21,\n",
+        "   'w': 10,\n",
+        "   'o': 17,\n",
+        "   't': 12,\n",
+        "   'y': 8,\n",
+        "   'a': 6,\n",
+        "   's': 13,\n",
+        "   'c': 4,\n",
+        "   'd': 3,\n",
+        "   'g': 0,\n",
+        "   'h': 24,\n",
+        "   'n': 18}),\n",
+        " -5286.197562931952)"
+       ]
+      }
+     ],
+     "prompt_number": 43
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "cadenus_decipher(first_chunk, key8b[0], key8b[1])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 44,
+       "text": [
+        "'wledgctftrojhrtheonovoresoovrpanegoarerufofinaltnportiuhertiorafthehasdwarenncompleeeandoastestssoveconlrudedtlsreisnntignfrrrthesinaaltranlicthaaehesecisityseemiceshuneanykhf'"
+       ]
+      }
+     ],
+     "prompt_number": 44
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[(w, s, d1+d2, r)\n",
+      " for w in hinted_keywords \n",
+      " for d1 in string.ascii_lowercase[:25]\n",
+      " for d2 in string.ascii_lowercase\n",
+      " for s in string.ascii_lowercase \n",
+      " for r in [True, False]\n",
+      " if d2 > d1\n",
+      " if cadenus_decipher(first_chunk, w, make_cadenus_keycolumn(doubled_letters=d1+d2, start=s, reverse=r)).startswith('phaseseven')]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 45,
+       "text": [
+        "[]"
+       ]
+      }
+     ],
+     "prompt_number": 45
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[(w, s, d1+d2, r, cadenus_decipher(first_chunk, w, make_cadenus_keycolumn(doubled_letters=d1+d2, start=s, reverse=r)))\n",
+      " for w in hinted_keywords \n",
+      " for d1 in string.ascii_lowercase[:25]\n",
+      " for d2 in string.ascii_lowercase\n",
+      " for s in string.ascii_lowercase \n",
+      " for r in [True, False]\n",
+      " if d2 > d1\n",
+      " if cadenus_decipher(first_chunk, w, make_cadenus_keycolumn(doubled_letters=d1+d2, start=s, reverse=r)).startswith('phase')]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 53,
+       "text": [
+        "[('filbert',\n",
+        "  'm',\n",
+        "  'lu',\n",
+        "  False,\n",
+        "  'phasennrkmffnhignsdaaojsrcisrncheentoeetueweisvhsounsucoaleyrhreitdioseotototdhsoagreeysifaglenhtlhonriuelseairscnrteameteiwnntneefefcrartataieposrlandrlvtartalvhctofnorehdpro'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'lm',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'lq',\n",
+        "  True,\n",
+        "  'phaseoeeeesnnufleyehhdoddraccseoeshengoenotthsaeovnlnesgurcrnofriearrtiatttsutacihtracaearaielrmanhhtpnleikhdseaigrtcssejpoemlwnrdinlfoisnfnteofetrourstrnrltrtvnaiwhsvafooeyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'lr',\n",
+        "  True,\n",
+        "  'phaseoeeeeynnufledehhdodoraccseoeshengsenotthnaeovnlresgurcanofrietrrtiatitsutacehtracararaielpmanhhtdnleikhtseaigrocssejpdemlwnrsinlfoifnfnteosetrourrtrnrlthtvnaiwesvafoosyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'lw',\n",
+        "  True,\n",
+        "  'phaseoeeeennnuflerehhdodaraccseteshengienottheaeovnlresgurcpnofriedrrtiatttsutacohtracadaraielsmanhhtfnleikhsseaigrrcssejphemlwnreinlfoisnfnteosetrourytrnrltdtvnaiwosvafoooyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mn',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mo',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mp',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mq',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mr',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'ms',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mt',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mu',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mv',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mw',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mx',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'my',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'mz',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'no',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'np',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'nq',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'nr',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'ns',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'nt',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'nu',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'nv',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'nw',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'nx',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'ny',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('foolerys',\n",
+        "  'z',\n",
+        "  'nz',\n",
+        "  True,\n",
+        "  'phaseoeeeernnuflehehhdoderaccseseshengsenotthyaeovnldesgurconofrieorrtiatstsutacnhtracararaielamanhhttnleikhiseaigrecssejpremlwnrpinlfoidnfnteotetrourotrnrltdtvnaiwssvafoofyoi'),\n",
+        " ('filleting',\n",
+        "  'm',\n",
+        "  'lu',\n",
+        "  False,\n",
+        "  'phasentekmysrhfgndmnrdjsonnpcncofareoestiiteinreovunrvuruleavhtrittocwiotiohothsenoaaeyrhoeilepagehondsfdisetnteinroeugetedsrhwnesoalfrafrnctiesseeoanrtatrarhrscactealafehslll')]"
+       ]
+      }
+     ],
+     "prompt_number": 53
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[(w, s, d1+chr(ord(d1)+1), r)\n",
+      " for w in hinted_keywords \n",
+      " for d1 in string.ascii_lowercase[:25]\n",
+      " # for d2 in string.ascii_lowercase\n",
+      " for s in string.ascii_lowercase \n",
+      " for r in [True, False]\n",
+      " # if d2 > d1\n",
+      " if cadenus_decipher(first_chunk, w, make_cadenus_keycolumn(doubled_letters=d1+chr(ord(d1)+1), start=s, reverse=r)).startswith('phases')]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 46,
+       "text": [
+        "[]"
+       ]
+      }
+     ],
+     "prompt_number": 46
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "cadenus_decipher(first_chunk, 'filbert', make_cadenus_keycolumn(doubled_letters='lu', start='m', reverse=False))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 52,
+       "text": [
+        "'phasennrkmffnhignsdaaojsrcisrncheentoeetueweisvhsounsucoaleyrhreitdioseotototdhsoagreeysifaglenhtlhonriuelseairscnrteameteiwnntneefefcrartataieposrlandrlvtartalvhctofnorehdpro'"
+       ]
+      }
+     ],
+     "prompt_number": 52
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "chunks(first_chunk, 175)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 48,
+       "text": [
+        "['afcaeuottacthrioletcserthshtrahkyorpfrgeoadppjnglternefeofiortsddoeeumscruernfetlaafstwientrvoonerhuahravereetsvsielhlostdoaloyaesmnndignnrhohhtsnaoilncnssicreanneeiiierwtanes']"
+       ]
+      }
+     ],
+     "prompt_number": 48
     },
     {
      "cell_type": "code",
      "input": [],
      "language": "python",
      "metadata": {},
-     "outputs": []
+     "outputs": [],
+     "prompt_number": 48
     }
    ],
    "metadata": {}