Fixed scytale cipher breaking to use column transposition, vigenere and beaufort...
[cipher-training.git] / challenge7.ipynb
1 {
2 "metadata": {
3 "name": ""
4 },
5 "nbformat": 3,
6 "nbformat_minor": 0,
7 "worksheets": [
8 {
9 "cells": [
10 {
11 "cell_type": "code",
12 "collapsed": false,
13 "input": [
14 "from cipherbreak import *\n",
15 "with open('2013/mona-lisa-words.txt') as f:\n",
16 " mlwords = [line.rstrip() for line in f]\n",
17 "mltrans = collections.defaultdict(list)\n",
18 "for word in mlwords:\n",
19 " mltrans[transpositions_of(word)] += [word]\n",
20 "c7a = open('2013/7a.ciphertext').read()\n",
21 "c7b = open('2013/7b.ciphertext').read()"
22 ],
23 "language": "python",
24 "metadata": {},
25 "outputs": [],
26 "prompt_number": 1
27 },
28 {
29 "cell_type": "code",
30 "collapsed": false,
31 "input": [
32 "c1a = open('2013/1a.ciphertext').read()\n",
33 "c1b = open('2013/1b.ciphertext').read()\n",
34 "c2a = open('2013/2a.ciphertext').read()\n",
35 "c2b = open('2013/2b.ciphertext').read()\n",
36 "c3a = open('2013/3a.ciphertext').read()\n",
37 "c3b = open('2013/3b.ciphertext').read()\n",
38 "c4a = open('2013/4a.ciphertext').read()\n",
39 "c4b = open('2013/4b.ciphertext').read()\n",
40 "c5a = open('2013/5a.ciphertext').read()\n",
41 "c5b = open('2013/5b.ciphertext').read()\n",
42 "\n",
43 "p1a = caesar_decipher(c1a, 8)\n",
44 "p1b = caesar_decipher(c1b, 14)\n",
45 "p2a = affine_decipher(c2a, 3, 3, True)\n",
46 "p2b = caesar_decipher(c2b, 6)\n",
47 "p3a = affine_decipher(c3a, 7, 8, True)\n",
48 "p3b = keyword_decipher(c3b, 'louvigny', 2)\n",
49 "p4a = keyword_decipher(c4a, 'montal', 2)\n",
50 "p4b = keyword_decipher(c4b, 'salvation', 2)\n",
51 "p5a = keyword_decipher(c5a, 'alfredo', 2)\n",
52 "p5b = vigenere_decipher(sanitise(c5b), 'florence')"
53 ],
54 "language": "python",
55 "metadata": {},
56 "outputs": [],
57 "prompt_number": 2
58 },
59 {
60 "cell_type": "code",
61 "collapsed": false,
62 "input": [
63 "plot_frequency_histogram(frequencies(sanitise(c7a)))"
64 ],
65 "language": "python",
66 "metadata": {},
67 "outputs": [
68 {
69 "output_type": "stream",
70 "stream": "stderr",
71 "text": [
72 "/usr/local/lib/python3.3/dist-packages/matplotlib/figure.py:372: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure\n",
73 " \"matplotlib is currently using a non-GUI backend, \"\n"
74 ]
75 },
76 {
77 "metadata": {},
78 "output_type": "display_data",
79 "png": "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\n3n777S6nGT16dMDPxe9//3vl5OQoJydHy5Yt67aXQLe1b24/3b12tbW1GjVqlEpLS5WTk6O6ujqf\ntUePHtXll1+uvLw85eTkaNWqVT5rFy5cqE8++UT5+flasGCBz7qTPXxz9LtkyRItWrSoy9pf/epX\npwSfrz0MDz/8sP7whz9Ikm6//XYVFRVJkjZt2qTrr7/+tPq3335bubm5am9v19GjR5Wdna2ampou\ne7j//vtPeb3uuecePfbYYz7X709/+pPy8/OVn5+vESNG6JJLLvFZ2yeF8zTzWNfc3GxZlmW1tbVZ\n2dnZ1ueff95l3d69ey2bzWa98cYblmVZVllZmbVkyZIua99//30rMzPTO6+Ty+jKtm3brJycHOvY\nsWPW4cOHrZEjR1pLly7tsrampsaaPn26dfz4ccuyLOu2226zVqxY4Xf90tPTfa7TSdXV1VZeXp7V\n3t5utba2WhkZGT572Lt3rxUXF2ft3LnTsizLKikpsV544QW/8x80aJDfx0OZZu/evVZ2drb10Ucf\nWfn5+dZ7773Xo3meXK/333/f6uzstMaNG2eVlZVZlmVZa9assWbMmOFzmkCei5Ovc1tbm3XkyBFr\nzJgx1o4dO3z2Eui2Fsz2c3Le/fr1s9566y2fNSetXr3auvnmm72/Hzp0yGdtbW2tlZ2d3e08T/bw\nzdolS5ZY5eXlXdbu2LHDmjJlivd3h8Nh1dXVnVa3detWa9asWZZlWdb3v/99a8KECdZXX31llZeX\nW0899VSX87733nutO++80/rpT3962kdrvqm2ttYqKCiwLMuyOjo6rPPPP9/ve/qkr776yiosLLTW\nrVvXbW1fwggqjJYtW6a8vDxNnDhRdXV1+ve//+2zdtiwYZo4caIk6frrr9eWLVu6rNu0aZNKSko0\ndOhQSVJiYqLPeb722muaOXOmBgwYoMGDB+uKK67wudtl48aNeuedd3TBBRcoPz9fmzZt0t69ewNd\nVZ9ef/11zZgxQ/3799egQYM0ffp0v7t+RowYobFjx0qSxo0bp9ra2h73EIpPP/1UM2bM0IsvvhiW\n44MjRozQmDFjZLPZNGbMGE2dOlWSlJ2d7XMdA30utmzZopkzZ+qcc87RwIEDNXPmTL322ms+ewl0\nWwtm+zlp+PDhGj9+vN8aSRo7dqw2bNighQsXasuWLUpISPBZ290yQ5WXl6dPP/1UDQ0N2rlzpxIT\nE5Wamnpa3ckRdGtrqwYMGKCJEydq27Zt2rJliwoLC7uc93333af169dr27Ztmj9/vs8ehg8frqSk\nJL377rtav369CgoK/L6nT/r5z3+uoqIiXX755YGvcB8Q1tPMY5nH49HGjRu1detWDRgwQBdffLHa\n29t91n/zGIZlWT6PadhstoDfsP9b2910paWlWrx4cUDzDlSwPZx99tnen8866yy/u58iaciQIRo+\nfLhee+01ZWVl9Xh+31yvfv36qX///t6fjx8/3u00/p6Lrp5jf8fEQt3WAtnuBg4c2G2NJGVkZGjH\njh165ZVXdO+996qoqEi//vWvA5rWn7i4uFN2TXe3/cyaNUurV69WY2Ojrr322i5r4uPjNWLECD3/\n/POaNGmSxo4dq02bNunjjz/2uW189tlnOnr0qDo6OnTs2DGde+65Pnu46aab9Nxzz6mpqUllZWXd\nruPzzz+v/fv3x+RxOUZQYXL48GElJiZqwIAB+uijj7R161a/9fv27fPWvPjiiz7/Z3bJJZfo73//\nu5qbmyXJ+29XLrroIlVWVuqLL75Qa2ur1q1b5/OPUVFRkVavXq3//ve/3vnu27ev2/XszuTJk/Xy\nyy+rvb1dR44c0SuvvBIVJxT0799f//jHP7RixQqtXLmyt9vxq7CwUJWVlTp27JiOHj2qyspKn9uP\nFPi2Fsz2E6yGhgYNGDBA1113ne68805t377dZ+3gwYPV2toa0Hztdrs+/fRTNTc3q729XevWrfNb\nf80112jlypVavXq1Zs2a5bOusLBQS5Ys0ZQpU1RYWKgnn3xSBQUFPut/8pOf6IEHHtCcOXO6PW52\n5ZVXqqqqStu2bdO0adP81r7zzjtaunRpr56Y1JsYQYXJpZdeqieffFIOh0OjRo3y7lLpis1m06hR\no/T444+rrKxMY8aM0W233dZlrcPh0D333KMpU6borLPOUkFBgZ599tkua/Pz83XNNdcoNzdXycnJ\nfne9jB49Wg888ICKi4vV2dmp+Ph4LV++XN/97nf99t2dCy64QFdccYXGjh0ru92unJwcfetb3wp4\nnt0tI5Q/mIFMY7PZdO6552rdunVyuVwaPHiwfvjDH4Y8T3/r5W8EE8gy8vPzdeONN3pf35tvvlm5\nubk+ewl0W/vf7efCCy/sdhQV6Ouxa9cu3XXXXd7RpL/TyJOSkjR58mTl5OTosssu8/u9cvHx8brv\nvvs0fvx4paamyuFw+O3J4XDoyJEjSktLk91u91lXWFioxYsXa+LEiTrnnHN0zjnn+Az2FStW6Oyz\nz9a1116rzs5OTZo0SR6PR06n02fPl1xyiRITE7t9/h5//HEdPHhQF198sSTpwgsv1FNPPeV3mr6E\nD+oi7I4ePaqBAweqra1NU6ZM0dNPP628vLxe6eXzzz/v1WNbva22tlbTp0/Xrl27gp520aJFGjRo\nkO64444IdBa7Ojs7NW7cOK1evVrnn39+b7djNHbxIexuueUW5efna9y4cbr66qt7LZwOHDigSZMm\n6a677uqV5ZuiJ7vpomH3bDSpqalRRkaGpk6dSjgFgBEUAMBIjKAAAEYioAAARiKgAABGIqAAAEYi\noAAARiKgAABG+j/og6x5jaDpPwAAAABJRU5ErkJggg==\n",
80 "text": [
81 "<matplotlib.figure.Figure at 0xb55607cc>"
82 ]
83 }
84 ],
85 "prompt_number": 3
86 },
87 {
88 "cell_type": "code",
89 "collapsed": false,
90 "input": [
91 "c7af = frequencies(sanitise(c7a))\n",
92 "plot_frequency_histogram(c7af, sort_key=lambda l: c7af[l])"
93 ],
94 "language": "python",
95 "metadata": {},
96 "outputs": [
97 {
98 "metadata": {},
99 "output_type": "display_data",
100 "png": "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\nf14NDQ0qKSnxO253X4+uar31kZaWph07dujVV1/Vfffdp4KCAv3mN7/xOvYLL7yg/fv3+91H8u0e\n/Pn888919OhRtbW16dixYzr33HO7rIuKiuq0adrb6xYdHa0RI0bohRde0KRJkzR27Fht2rRJn3zy\nSZfrRk/X91mzZmn16tWqr6/Xdddd152nGBI9Wd9Csc57PB5t3LhRW7du1aBBg3TJJZeotbW11+P2\nJ8yggqCgoECrV6/Wf//7X0lSY2Oj9u3b57X+4osvVnl5ub788ks1Nzdr3bp1xu80HThwoP7xj39o\nxYoVWrlyZZ/0sG/fPm3dulWS9NJLL3X51/pJV111lSoqKrRt2zZNmzbN57iTJ0/WK6+8otbWVh05\nckSvvvqq19cjPz9f5eXlOnbsmI4ePary8nKvfdTV1WnQoEG6/vrrddddd2n79u1ee3j33Xe1dOnS\nbh0Ic+mll+rvf/+7GhsbJanjX29++tOf6sEHH9ScOXN87nex2+367LPP1NjYqNbWVq1bt85rbX5+\nvpYsWaIpU6YoPz9fTz31lPLy8rqs7en6fu2112rlypVavXq1Zs2a5fO59VRMTIyam5u7VduT9S0U\nDh8+rLi4OA0aNEgff/xxRy+RhBlUEIwePVoPPvigCgsL1d7erujoaC1fvlznn39+l/W5ubm69tpr\nlZ2drcTERF100UV+/2r359s137zu6/HdDUabzaZzzz1X69atk8vlUkxMjH70ox/1uBd/y/B136hR\no/TEE0+opKREY8aM0e233+61Pjo6Wpdeeqni4uL8Lv/CCy/UlVdeqbFjx8putysrK0vf+c53uqzN\nzc3VTTfd1LFZ9JZbblF2dnaXtbt27dLdd9/dMaP1dXjzE088oYMHD+qSSy6RJF100UV6+umnu6x1\nOBy69957NWXKFJ111lnKy8vTc88912XtihUrdPbZZ+u6665Te3u7Jk2aJI/HI6fTeVptdHS07r//\nfo0fP17JyclyOBw+g3rx4sWaOHGizjnnHJ1zzjle38C/vb7726TscDh05MgRpaSkyG63+6w9qbvr\nWEJCgiZPnqysrCxdfvnlPr+zrifrW0/X+e70e9lll+mpp56Sw+HQqFGjOjY3RhI+qGuARYsWaciQ\nIbrzzjv7upU+88UXXwR12317e7vGjRun1atX64ILLvBbf/ToUQ0ePFgtLS2aMmWKnnnmGeXk5ASl\nF/Q/1dXVmj59unbt2tXXrUQ0NvEZwvRNfKF04MABTZo0SXfffXdQxquqqlJaWpqmTp3arXCSpFtv\nvVW5ubkaN26crrnmGsIJEf07aQpmUAAAIzGDAgAYiYACABiJgAIAGImAAgAYiYACABiJgAIAGOn/\nARTQq3riH9t+AAAAAElFTkSuQmCC\n",
101 "text": [
102 "<matplotlib.figure.Figure at 0xaeb102cc>"
103 ]
104 }
105 ],
106 "prompt_number": 5
107 },
108 {
109 "cell_type": "code",
110 "collapsed": false,
111 "input": [
112 "plot_frequency_histogram(normalised_english_counts, sort_key=lambda l: normalised_english_counts[l])"
113 ],
114 "language": "python",
115 "metadata": {},
116 "outputs": [
117 {
118 "metadata": {},
119 "output_type": "display_data",
120 "png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAEkCAYAAABzKwUZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHx5JREFUeJzt3X9QVXX+x/HXNSgLpNQxG++lUCF+KF5QkFHXpGwXtXTM\ntJg03aQidx23xmprahNn+1ZMuptGP7CZtXHb3B/ujrjKMq26d0ZLl0zsx6CNFtQFw9rMwF8E18/3\nD4siL+deEMSPPB8zZ7zH8z6f+zmHw33xOefce13GGCMAAM5zvbq7AwAAhIPAAgBYgcACAFiBwAIA\nWIHAAgBYgcACAFghZGCVlZUpKSlJCQkJKiwsPGP5vn37NGbMGPXu3VvLly8/Y3kgEFB6erqmTp3a\nOT0GAPRIEU4LA4GAFi5cqM2bN8vtdiszM1PTpk1TcnJyS03//v31/PPPa/369UHbWLFihVJSUtTQ\n0NC5PQcA9CiOI6zy8nLFx8crLi5OkZGRys3NVUlJSauaAQMGKCMjQ5GRkWesX1NTo9LSUt19993i\n/ckAgLPhGFi1tbWKjY1tmfd4PKqtrQ278QceeEDPPvusevXiUhkA4Ow4JonL5epwwxs3btSVV16p\n9PR0RlcAgLPmeA3L7XbL7/e3zPv9fnk8nrAafuutt7RhwwaVlpbq5MmTqq+v19y5c7VmzZpWdWlp\naXr33Xc70HUAwIXG6/Vqz549wRcaB01NTWbIkCGmqqrKNDY2Gq/XayorK4PWLlmyxCxbtizoMp/P\nZ26++eagy0J0wXpLliyh9jzqB7Xtrz1f+kFtx+tt4pQJjiOsiIgIFRUVKScnR4FAQHl5eUpOTlZx\ncbEkKT8/X3V1dcrMzFR9fb169eqlFStWqLKyUtHR0a3aOpvTiwAAOAaWJE2ePFmTJ09u9X/5+fkt\nj6+66qpWpw2DmTBhgiZMmNDBLgIAIF1UUFBQ0J0dWLp0qbq5C10uLi6O2vOoH9S2v/Z86Qe1Ha+3\nhVMmuL49Z9htXC4XdxECACQ5ZwJvkAIAWIHAAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIAWIHA\nAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIA\nWIHAAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIAWIHAAgBYIazAKisrU1JSkhISElRYWHjG8n37\n9mnMmDHq3bu3li9f3vL/fr9f119/vYYNG6bhw4dr5cqVnddzAECP4jLGGKeCQCCgxMREbd68WW63\nW5mZmVq7dq2Sk5Nbar744gt98sknWr9+vfr27avFixdLkurq6lRXV6e0tDQdPXpUo0aN0vr161ut\n63K5FKILAIAewikTQo6wysvLFR8fr7i4OEVGRio3N1clJSWtagYMGKCMjAxFRka2+v+rrrpKaWlp\nkqTo6GglJyfr4MGDHd0OAEAPFjKwamtrFRsb2zLv8XhUW1vb7ieqrq5WRUWFsrKy2r0uAPRUMTH9\n5HK5HKeYmH7d3c1zIiJUgcvlOusnOXr0qGbOnKkVK1YoOjr6rNsDgJ6ioeErSc6XTRoazv512gYh\nA8vtdsvv97fM+/1+eTyesJ+gqalJt956q+bMmaPp06cHrSkoKGh5nJ2drezs7LDbBwDYy+fzyefz\nhVUb8qaL5uZmJSYmasuWLRo0aJBGjx59xk0X3ykoKFCfPn1abrowxmjevHnq37+/fv/73wfvADdd\nAECbTp/lCvUaeeG8jjplQsjAkqR//etfuv/++xUIBJSXl6dHH31UxcXFkqT8/HzV1dUpMzNT9fX1\n6tWrl/r06aPKykrt2bNH1113nUaMGNFyavHpp5/WpEmTwuocAPR0BNYPloUTWF2JwAKAthFY3+OT\nLgAAViCwAABWILAAAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABWILAA\nAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABW\nILAAAFYgsAAAViCwAABWILAAAFYgsAAAVggZWGVlZUpKSlJCQoIKCwvPWL5v3z6NGTNGvXv31vLl\ny9u1LgAA4XIZY0xbCwOBgBITE7V582a53W5lZmZq7dq1Sk5Obqn54osv9Mknn2j9+vXq27evFi9e\nHPa6kuRyueTQBQDo0Vwul6RQr5EXzuuoUyY4jrDKy8sVHx+vuLg4RUZGKjc3VyUlJa1qBgwYoIyM\nDEVGRrZ7XQAAwuUYWLW1tYqNjW2Z93g8qq2tDavhs1kXAIAfcwys00PRjjmbdQEA+LEIp4Vut1t+\nv79l3u/3y+PxhNVwe9YtKChoeZydna3s7OywngMAYDefzyefzxdWreNNF83NzUpMTNSWLVs0aNAg\n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\n1CkzatQoM3/+fGOMMSUlJWb69OlntP/dz+47y5YtMwUFBY7bGM6x095js6qqyvTq1cv897//Ddn2\nunXrzD333NMy//XXXzu2GxERYd59911jjDG33Xabee2118669jvh7Atjvj8Ojh8/boYPH97msfTd\nfjt+/Lg5evSoGTZsmKmoqGiz3erq6lY/v7ZUVlaaqVOnmubmZmOMMQsWLDBr1qwJq+8XCkZYXWzR\nokWaOHGibrrppqDLt23bphkzZqh3797q06ePpk2b1qmnUp544gm98cYb2rVrlx5++GHH2s8//1zT\np0/X66+/7njNIC0tTZ9//rk+++wzvfvuu+rbt6/cbneb9bGxsRozZowkac6cOdq+fftZ17755pua\nPn26Lr74YkVHR2vq1Kmdtt+2bt2q2267Tf36nX6Td9++fYPWXXPNNerfv7/27NmjN954QyNHjgxa\n+91otaGhQb1799aYMWO0a9cubd++XePHjz+jfvDgwRo2bJhcLpeGDRumG2+8UZI0fPhwVVdXd8o2\nhqMjx+Y111yj0aNHh2x7xIgR+ve//61HHnlE27dvV0xMjGP94MGDNWLECEnSqFGjHPdDe2rbY8WK\nFUpLS9OYMWNUU1Oj/fv3B63bvn27ZsyYoUsvvVRRUVGaMWOGtm3b1ma74R63W7Zs0TvvvKOMjAyl\np6dr69atqqqq6tC22MrxtnacnVdffVV+v9/x/LTL5Wp1wHZmWEnS//73Px07dkyBQEAnTpzQZZdd\n1mbtFVdcoWuuuUbbtm1TUlKSY7uzZs3SunXrVFdXp9zcXMfaH177MMY4XgsJt7Yr99uP23Zy9913\na/Xq1Tp06JDmz58ftCYyMlKDBw/Wq6++qrFjx2rEiBHaunWrDhw4EHQ/X3LJJS2Pe/XqpYsvvrjl\ncXNz8xn1ERERrU4NOZ1GbY+O7OOoqKiw2k5ISFBFRYU2bdqkxx9/XBMnTtRvfvObNut/uE8uuugi\nx21sT224fD6ftmzZop07d6p37966/vrr1djYGLQ22H7ryDXDYObNm6ennnqqU9qyESOsLvLOO+9o\n+fLlIS/wX3fddVq/fr1OnjyphoYGbdy4sdMObun0e+WefPJJ3XHHHSHPj1988cX6xz/+oTVr1gR9\nk/cP3X777Vq7dq3WrVunWbNmOdZ++umn2rlzpyTp9ddfDzqqaG/tuHHj9M9//lONjY06evSoNm3a\n1Gn77YYbbtDf/vY3HT58WJJa/g3mlltuUVlZmXbt2qWcnJw268aPH69ly5ZpwoQJGj9+vF5++WWN\nHDmyU/o7cOBAff755zp8+LAaGxu1cePGTmm3K4/Nzz77TL1799bs2bP14IMPavfu3Z3Sblepr69X\n37591bt3b+3bt6/lGA1m/PjxWr9+vU6cOKFjx45p/fr1jsd8nz591NDQELIPEydO1Lp16/TFF19I\nOn1cfvrpp+3fGIsxwuoiL7zwgr766itdf/31kqTMzEytWrXqjLr09HTdfvvt8nq9uvLKK5WZmRn2\nX/ehXjzWrFmjSy65RLm5uTp16pTGjh0rn8+n7OzsNtu77LLLtHHjRv30pz9Vnz59dPPNNwetTUlJ\n0dGjR+XxeDRw4EDHPiYmJuqFF17Q/PnzNWzYMC1YsKDN+nBrMzIyNG3aNI0YMUIDBw5UamqqLr/8\n8rZ3hsK/yy0lJUWPPfaYJkyYoIsuukgjR47UH/7wh6C1kZGRuuGGG9S3b1/H9sePH6+nnnpKY8aM\n0aWXXqpLL720zRexH7fzw/lgzxEZGaknnnhCo0ePltvtVkpKSshtDWdf/PjYDOdUX7j7+P3339dD\nDz3UMoIMdVu30z45m9pwlkvSpEmT9PLLLyslJUWJiYktp62DSU9P189//vOW/XXPPffI6/W2Wd+/\nf3+NGzdOqampmjJlSpvfHZicnKwnn3xSP/vZz3Tq1ClFRkbqxRdf1NVXXx2y/xcK3jh8nlm6dKmi\no6O1ePFix7ovv/yyU8/Pnw+qq6s1depUvf/++2HVHzt2TFFRUTp+/LgmTJigV155RWlpaV3cy9ZO\nnTqlUaNGad26dRo6dOg5fW6gp+GU4Hko1F98Bw8e1NixY/XQQw+dox6dO+055XTvvfcqPT1do0aN\n0syZM895WFVWViohIUE33ngjYQWcA4ywAABWYIQFALACgQUAsAKBBQCwAoEFALACgQUAsAKBBQCw\nwv8DbMnA/BWkp54AAAAASUVORK5CYII=\n",
121 "text": [
122 "<matplotlib.figure.Figure at 0xaeae5cec>"
123 ]
124 }
125 ],
126 "prompt_number": 6
127 },
128 {
129 "cell_type": "code",
130 "collapsed": false,
131 "input": [
132 "c7bf = frequencies(sanitise(c7b))\n",
133 "plot_frequency_histogram(c7bf, sort_key=lambda l: c7bf[l])"
134 ],
135 "language": "python",
136 "metadata": {},
137 "outputs": [
138 {
139 "metadata": {},
140 "output_type": "display_data",
141 "png": "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\nZWWllZWVZbW0tFjHjx+3UlJS/K7PMwJ9PTt27LCmTp1qWZZlfe9737NGjRplffXVV1ZJSYn1/PPP\n+3wt77//vtXW1mYNHz7cKi4utizLstavX29NmjTJ5zKTk5P9rsczznymm5ubrRMnTlhDhw61du/e\n7bOmqqrKKigosE6fPm1ZlmXde++91sqVK33WVFdXWzk5OZZlWVZra6s1cODAgP4vtHednlnWN/8v\nhAIjqIvgZz/7mfLy8nTjjTf6bfvaa69p8uTJ6tGjh3r37q2bbrrJ7+6dYcOGafPmzZo3b562b9+u\nmJgYn+2zsrL0ySefqK6uTnv27FFsbKwSExP99u3RRx/Vpk2btHPnTs2ZM8dv+zP69eun0aNHS5Jm\nzJih7du3+2wfzHuwdetWFRYWqm/fvpKk2NhYv/365JNPNGnSJL300kud/l3M4sWLlZWVpdGjR6um\npkb//Oc//db0799fI0eO7NR+tXfdSNKAAQM0bNgwSdLw4cNVXV3ts/3rr7+uSZMmqXv37urVq5cK\nCgoC3mUZqDMj4OPHj6tHjx4aPXq0du7cqe3btys3N/eCdQMGDNDQoUNls9k0dOhQjR8/XpKUnp7u\n93W1x/bt2zV58mRdccUV6tmzpyZPnqzXXnvNZ82WLVv0zjvvaMSIEcrOztbWrVt18OBBnzX9+/dX\nXFyc3n33XW3atEk5OTkB/V9o7zqVFPJ1KIX4MHP4t2LFCh0+fDjgfbU2m+2sFR/IhyAlJUW7d+/W\nK6+8okceeUR5eXn61a9+5bNm6tSpWrdunerr63XbbbcF1LdPP/1UJ0+eVGtrq06dOqUrr7wyoLpv\nfo9gWZbf7xWCeQ/+tyYQffr0Uf/+/fXaa68pLS0toJqoqKizdrMEsrvS4/Foy5Yt2rFjh3r06KHr\nrrtOLS0tfut69uwZUJ86or3rRpIuv/xy7/XLLrvM73sQzPpsr+joaA0YMEArVqzQmDFjNGzYMG3d\nulUff/yxz3X7zdfSrVs3de/e3Xv99OnTIevf+d6DQN7roqIiLViwoF3LuvPOO7V8+XI1NDSouLg4\noJr2rtPOwgiqC73zzjtatGhRu75Evfbaa1VeXq4vvvhCx48f18aNG/1+kOvq6tSjRw/dfvvteuCB\nB7Rr1y6/y7n11lu1evVqrVu3TlOnTg2obz/+8Y/1+OOPa/r06e3a53zo0CHt2LFDkvTSSy/5/ItW\nCu49uP766/XXv/5VjY2NkuT915fu3bvrb3/7m1auXKnVq1cH9Frsdrs++eQTNTY2qqWlRRs3bvRb\nc+zYMcXGxqpHjx766KOPvO+FCdq7boIxduxYvfzyy2ppadGJEyf0yiuvdMrBD7m5uVq4cKHGjRun\n3NxcPffcc8rJyQn5coKRm5ur8vJynTp1SidPnlR5ebnf9zovL0/r1q3Tv//9b0lff6YPHTrkd1k3\n33yzKioqtHPnTk2YMCEk/T+f3r176/jx4yF9TkZQXWjp0qX6/PPPdd1110mSrrnmGj3//PM+a7Kz\ns3XrrbcqMzNT8fHxuuaaa/z+xbl37149+OCD3r8AAzn00+Fw6MSJE0pKSpLdbvfbfuXKlbr88st1\n2223qa2tTWPGjJHH45HT6fRbO3jwYC1dulTFxcUaOnSo7r33Xp/t//c9CGQ3l8Ph0MMPP6xx48bp\nsssuU05Ojl588UWfNTabTVdeeaU2btwol8ul3r176wc/+IHPmujoaD366KMaOXKkEhMT5XA4/G5s\nb7jhBj333HNyOBwaPHiwd5eaP8FsxNtTY7PZ2r1uzrcMf8scMWKEbrrpJg0bNkx2u10ZGRn61re+\nFXAfA5Wbm6sFCxZo9OjRuuKKK3TFFVf4DQFfryWQkX6gsrOzdccdd3g/y3fddZcyMzN91gwZMkSP\nP/648vPz1dbWpujoaJWVlenqq6/2WRcdHa3rr79esbGxAfexvetUkuLi4jR27FhlZGRo4sSJITkf\nID/UvcTMnz9fvXr10v3333+xuxKU6upqFRQUaO/evRe7K7iITp48qZ49e6q5uVnjxo3TsmXLlJWV\ndbG7FZba2to0fPhwrVu3TgMHDrzY3WkXdvFdgkz+LUggLvX+o+PuvvtuZWdna/jw4ZoyZQrh1Emq\nqqqUkpKi8ePHX3LhJDGCAgAYihEUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASP8PW/f+Q9EK\neawAAAAASUVORK5CYII=\n",
142 "text": [
143 "<matplotlib.figure.Figure at 0xaeb95f8c>"
144 ]
145 }
146 ],
147 "prompt_number": 7
148 },
149 {
150 "cell_type": "code",
151 "collapsed": false,
152 "input": [
153 "plot_frequency_histogram(c7bf)"
154 ],
155 "language": "python",
156 "metadata": {},
157 "outputs": [
158 {
159 "metadata": {},
160 "output_type": "display_data",
161 "png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEkCAYAAAB6wKVjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHBJJREFUeJzt3X9009X9x/FXsEUU6Cjdmh5bpExaSmjpDxQOsEqwpDgd\nHoZSBXWVTp2yne04FZg6LfsqzRSmuIlOnTrmkck4OwXR0wODE46oWBFEtDqmkEFLW6e1/CpWaT/f\nPxhVBiSfpGm4JM/HOTm06X3n3iQf8sr95JP7cViWZQkAAMP0Ot0DAADgZAgoAICRCCgAgJEIKACA\nkQgoAICRCCgAgJECBlRFRYWcTqfy8vJO+NuiRYvUq1cvtbS0dF1XVVWlrKws5eTkaM2aNZEfLQAg\nbgQMqFmzZqmmpuaE6/fs2aO1a9dq8ODBXdfV1dXpxRdfVF1dnWpqajR79mx1dnZGfsQAgLgQMKCK\ni4uVnJx8wvW//OUv9eCDDx533cqVKzVjxgwlJiYqMzNTQ4cOVW1tbWRHCwCIGyF/BrVy5UplZGRo\n5MiRx12/d+9eZWRkdP2ekZGhhoaG7o8QABCXEkJp3NbWpgULFmjt2rVd1wVaKcnhcIQ/MgBAXAsp\noD7++GP5/X7l5+dLkurr6zVq1Ci9+eabSk9P1549e7ra1tfXKz09/YTbKCgo0LZt27o5bABALMjP\nz9c777xz8j9aQezatcvKzc096d8yMzOtzz77zLIsy3r//fet/Px8q7293dq5c6f13e9+1+rs7Dyh\nxkaXMe++++6jhhpqYqzG1HGZXhMoEwJ+BjVjxgyNGzdOO3bs0KBBg/Tss88e9/dv7sJzuVwqKyuT\ny+XS97//fS1ZsoRdfACAsAXcxbds2bKAxTt37jzu97vuukt33XVX90cFAIh7Z1VWVlZGs8P58+cr\nyl0aKTMzkxpqqImxGlPHZXJNoExw/HcfYNQ4HI6AR/4BAOJHoExgLT4AgJEIKACAkQgoAICRCCgA\ncS0paaAcDoetS1LSwNM93LjCQRIA4trR72vafU3i9SvSOEgCAHDGIaAAAEYioAAARiKgAABGIqAA\nAEYioAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKgAABG\nIqAAAEYioAAARiKgAABGIqAAAEYioAAARgoYUBUVFXI6ncrLy+u67s4779Tw4cOVn5+vadOmad++\nfV1/q6qqUlZWlnJycrRmzZqeGzUAIOYFDKhZs2appqbmuOtKS0v1/vvva9u2bcrOzlZVVZUkqa6u\nTi+++KLq6upUU1Oj2bNnq7Ozs+dGDgCIaQEDqri4WMnJycdd5/F41KvX0bIxY8aovr5ekrRy5UrN\nmDFDiYmJyszM1NChQ1VbW9tDwwYAxLpufQb1zDPP6LLLLpMk7d27VxkZGV1/y8jIUENDQ/dGBwCI\nW2EH1AMPPKDevXtr5syZp2zjcDjCvXkAQJxLCKfoueee0yuvvKJ169Z1XZeenq49e/Z0/V5fX6/0\n9PST1ldWVnb97Ha75Xa7wxkGAOAM4/P55PP5bLV1WJZlBWrg9/s1ZcoUbd++XZJUU1Oj22+/XRs2\nbNC3v/3trnZ1dXWaOXOmamtr1dDQoEmTJumjjz46YRblcDgUpEsAiJqjr1F2X5N4/Yq0QJkQcAY1\nY8YMbdiwQZ9++qkGDRqk+fPnq6qqSl9++aU8Ho8kaezYsVqyZIlcLpfKysrkcrmUkJCgJUuWsIsP\nABC2oDOoiHfIDAqAQZhBnV6BMoGVJAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKg\nAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAA\nRiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARgoYUBUVFXI6ncrL\ny+u6rqWlRR6PR9nZ2SotLVVra2vX36qqqpSVlaWcnBytWbOm50YNAIh5AQNq1qxZqqmpOe46r9cr\nj8ejHTt2qKSkRF6vV5JUV1enF198UXV1daqpqdHs2bPV2dnZcyMHAMS0gAFVXFys5OTk465btWqV\nysvLJUnl5eWqrq6WJK1cuVIzZsxQYmKiMjMzNXToUNXW1vbQsAEAsS7kz6Cam5vldDolSU6nU83N\nzZKkvXv3KiMjo6tdRkaGGhoaIjRMAEC86dZBEg6HQw6HI+DfAQAIR0KoBU6nU01NTUpLS1NjY6NS\nU1MlSenp6dqzZ09Xu/r6eqWnp5/0NiorK7t+drvdcrvdoQ4DAHAG8vl88vl8tto6LMuyAjXw+/2a\nMmWKtm/fLkmaM2eOUlJSNHfuXHm9XrW2tsrr9aqurk4zZ85UbW2tGhoaNGnSJH300UcnzKIcDoeC\ndAkAUXP0NcruaxKvX5EWKBMCzqBmzJihDRs26NNPP9WgQYP0m9/8RvPmzVNZWZn+9Kc/KTMzU8uX\nL5ckuVwulZWVyeVyKSEhQUuWLGEXHwAgbEFnUBHvkBkUAIMwgzq9AmUCK0kAAIxEQAEAjERAAQCM\nREABAIxEQAEAjERAAQCMREABAIxEQAEAjERAAQCMREABAIxEQAEAjERAAQCMREABAIxEQAEAjERA\nIWYkJQ2Uw+EIeklKGni6hwrABs4HhZhh/7w+bIP4GueDOr04HxQA4IxDQAEAjERAAQCMREABAIxE\nQAEAjERAAQCMREABAIxEQAFAnLP7Jfdof9GdL+oiZvBFXYSDL+qe3seAL+oCAM44BBQAwEgEFADA\nSGEHVFVVlUaMGKG8vDzNnDlT7e3tamlpkcfjUXZ2tkpLS9Xa2hrJsQIA4khYAeX3+/XUU09py5Yt\n2r59uzo6OvTXv/5VXq9XHo9HO3bsUElJibxeb6THCwCIE2EFVFJSkhITE9XW1qYjR46ora1N5513\nnlatWqXy8nJJUnl5uaqrqyM6WABA/AgroAYOHKjbb79d559/vs477zwNGDBAHo9Hzc3NcjqdkiSn\n06nm5uaIDhYAED/CCqiPP/5YjzzyiPx+v/bu3auDBw/q+eefP67NsS91AQAQjoRwijZv3qxx48Yp\nJSVFkjRt2jS98cYbSktLU1NTk9LS0tTY2KjU1NST1ldWVnb97Ha75Xa7wxkGAOAM4/P55PP5bLUN\nayWJbdu26dprr9Vbb72lPn366IYbbtDo0aP173//WykpKZo7d668Xq9aW1tPOFCClSTQU1hJAuFg\nJQlzV5IIe6mjBx98UH/+85/Vq1cvFRUV6emnn9aBAwdUVlam3bt3KzMzU8uXL9eAAQNsDwboDgIK\n4SCgYjCgemIwQHcQUAgHAWVuQLGSBADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQU\nAMBIBBQAwEgEFEKSlDSwa6X6QJekpIGne6iwiecUpmKpI4TE5OWETB6byeL9cWOpI5Y6AgAgJAQU\nAMBIBBQAwEgEFADASAQUAMBIBBR6HIcxAwgHh5kjJOEckhytw5jj/XDpcMX748Zh5hxmDgBASAgo\nAICRCCgAgJEIKACAkQgoAICRCCgAgJEIKACAkQgoAICRCCgAgJEIKMBQLBGFeBd2QLW2tuqqq67S\n8OHD5XK59Oabb6qlpUUej0fZ2dkqLS1Va2trJMcKxJUDBz7X0eVnAl+OtgNiT9gB9Ytf/EKXXXaZ\nPvjgA7377rvKycmR1+uVx+PRjh07VFJSIq/XG8mxAgDiSFiLxe7bt0+FhYXauXPncdfn5ORow4YN\ncjqdampqktvt1ocffnh8hywWe0Zjsdjo4XGLDhaLjbHFYnft2qXvfOc7mjVrloqKinTTTTfp0KFD\nam5ultPplCQ5nU41NzeHP2oAQFwLK6COHDmiLVu2aPbs2dqyZYv69u17wu68Yx/gAgAQjoRwijIy\nMpSRkaGLLrpIknTVVVepqqpKaWlpampqUlpamhobG5WamnrS+srKyq6f3W633G53OMMAAJxhfD6f\nfD6frbZhn7Dw4osv1tNPP63s7GxVVlaqra1NkpSSkqK5c+fK6/WqtbX1pDOrWNyHGy/4DCp6eNyi\ng8+gzP0MKuyA2rZtm2688UZ9+eWXuuCCC/Tss8+qo6NDZWVl2r17tzIzM7V8+XINGDDA9mBgPgIq\nenjcooOAisGA6onBwHwEVPTwuEUHAWVuQLGSBADASAQUAMBIBBQAwEgEFAAYyu6CwbG6aHBY34MC\nAPS8rxcMttM29hZGYAYFRAGnzgBCxwwKiAK774Rj8V0wEC5mUDASMw4AzKBgJGYcAJhBATGEmSdi\nCTMoIIYw80QsYQZlIN4FAwAzKCPxLhgAmEEBAAxFQAEAjERAAQCMREAhrnFACmAuDpJAXOOAFMBc\nzKB6GO/QgfDE+6kmIDmsSJ5c3k6HAc4/H4scDofsLZf/9eMSTk20ROv+mFwTDpPvj6nbm/1xSd0Z\nW7T6CUc8PAaBMoEZFADASAQUAMBIBBQAwEgEFACEiAM4ooPDzAEgRHa/nnC0LV9RCBczKCBEfHUA\niA5mUECI+HIvEB3MoAAARupWQHV0dKiwsFBTpkyRJLW0tMjj8Sg7O1ulpaVqbW2NyCABAPGnWwG1\nePFiuVyu/34LWfJ6vfJ4PNqxY4dKSkrk9XojMkgAQPwJO6Dq6+v1yiuv6MYbb+xapmLVqlUqLy+X\nJJWXl6u6ujoyowQAxJ2wA+q2227TQw89pF69vr6J5uZmOZ1OSZLT6VRzc3P3RwgAiEthBdTq1auV\nmpqqwsLCUy7yd+xQWwAAwhHWYeavv/66Vq1apVdeeUVffPGF9u/fr+uvv15Op1NNTU1KS0tTY2Oj\nUlNTT1pfWVnZ9bPb7Zbb7Q5nGACAM4zP55PP57PVttun29iwYYMWLlyol156SXPmzFFKSormzp0r\nr9er1tbWEw6U4HQbp2xp/OkPJLNPAUFNbG1vJp9qwuSxmdzPqfru0dNtHNuVN2/ePK1du1bZ2dla\nv3695s2bF4mbBwDEIU5Y2MNi6R2tZPa7empia3szefZg8thM7udUfXPCQgDAGYWAihHhLGDKoqcA\nTMZisTEinAVMWfQUgMmYQQEAjERAAQCMREABAIxEQAEAjERAAQCMREABAIxEQAEAjERAAQCMREAB\nAIxEQAEAjERAAQCMREABAIxEQAEAjERAAQCMREABAIxEQAEIGSe7NJfd5+ZMeH44YSGAkHGyS3PZ\nfW6OtjX7+WEGBQBREEszm2hhBgUAURBLM5toYQYFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAw\nUlgBtWfPHk2cOFEjRoxQbm6uHn30UUlSS0uLPB6PsrOzVVpaqtbW1ogOFgAQP8IKqMTERD388MN6\n//33tWnTJj322GP64IMP5PV65fF4tGPHDpWUlMjr9UZ6vACAOBFWQKWlpamgoECS1K9fPw0fPlwN\nDQ1atWqVysvLJUnl5eWqrq6O3EgBAHGl259B+f1+bd26VWPGjFFzc7OcTqckyel0qrm5udsDBADE\np24F1MGDB3XllVdq8eLF6t+//3F/O7amFAAA4Qh7Lb6vvvpKV155pa6//npNnTpV0tFZU1NTk9LS\n0tTY2KjU1NST1lZWVnb97Ha75Xa7wx0GAOAM4vP55PP5bLV1WJZlb/XCb7AsS+Xl5UpJSdHDDz/c\ndf2cOXOUkpKiuXPnyuv1qrW19YQDJRwOh8Lo8ox1dBZp5/5+/bhQQ00s1oTKfh/R74eayL2GB8qE\nsAJq48aNuvjiizVy5Miu3XhVVVUaPXq0ysrKtHv3bmVmZmr58uUaMGCA7cHEIpNfMKihJpo1oQrn\nRTMpaeB/Vw0Prn//ZO3f32J0CJhcEykRD6ieGkwsMvkFgxpqolVDcMRejd3n9NjzecpbC5AJnA8K\nQI/jXEixJxpnVWapIwCAkQgoAICRCCgAgJEIKACAkQgoAICRCCgAgJEIKACAkQgoAICRCCgAgJEI\nKACAkQgoAICRCCgAgJEIKACAkQgoAICRCCgAgJEIKACAkQgoAICRCCgAgJEIKACAkQgoAICRCCgA\ngJEIKACAkQgoAICRCCgAgJEIKACAkQgoAICRCCgAgJEiHlA1NTXKyclRVlaWfvvb30b65gEAcSKi\nAdXR0aGf/exnqqmpUV1dnZYtW6YPPvggkl3ECB811FATczXR6CMWa04togFVW1uroUOHKjMzU4mJ\nibrmmmu0cuXKSHYRI3zUUENNzNVEo49YrDm1iAZUQ0ODBg0a1PV7RkaGGhoaItkFACBORDSgHA5H\nJG8OABDPrAh64403rMmTJ3f9vmDBAsvr9R7XJj8/35LEhQsXLly4WPn5+afMFIdlWZYi5MiRIxo2\nbJjWrVun8847T6NHj9ayZcs0fPjwSHUBAIgTCRG9sYQE/eEPf9DkyZPV0dGhH//4x4QTACAsEZ1B\nAQAQKawkYTi/36+8vLyo91tZWalFixb1yG0/+uijcrlcuv7663vk9qXwH7fx48f3eB+S1K9fv7Dq\n0PP27dunxx9//HQPAyKgcAo9eUTm448/rn/84x/6y1/+0mN9hOu1116LSj8c8do9lmWpp3b+fP75\n51qyZEmP3DZCQ0BF2Q9/+ENdeOGFys3N1VNPPWWr5siRI7ruuuvkcrk0ffp0HT58OGjN0qVLlZ+f\nr4KCAv3oRz+y1c8DDzygYcOGqbi4WP/85z9t1Tz//PMaM2aMCgsLdcstt6izszNg+1tuuUU7d+7U\npZdeqkceecRWH5L0f//3f8rJyVFxcbFmzpxpa3bX0dGhm2++Wbm5uZo8ebK++OKLoDXhzmx27typ\noqIivf3222HVn4rf71dOTo5mzZqlYcOG6dprr9WaNWs0fvx4ZWdn66233jpl3fDhw0O+/7/73e+U\nl5envLw8LV682Pb4Qt0+v7mt2X0+/X6/hg0bpvLycuXl5am+vj5g+0OHDunyyy9XQUGB8vLytHz5\n8qB9SNK8efP08ccfq7CwUHPnzrU1rm/OpBcuXKj58+cHrPnVr351XAgG22Px0EMP6fe//70k6bbb\nblNJSYkkaf369bruuutOWffWW28pPz9f7e3tOnTokHJzc1VXVxdwbPfdd99xz/3dd9+tRx99NGDN\nH//4RxUWFqqwsFBDhgzRJZdcErC9bZE8zBzBtbS0WJZlWW1tbVZubq712WefBWy/a9cuy+FwWK+/\n/rplWZZVUVFhLVy4MGDNe++9Z2VnZ3fd9rE+A9m8ebOVl5dnHT582Nq/f781dOhQa9GiRQFr6urq\nrClTplhHjhyxLMuybr31Vmvp0qVB+8rMzAx6v7+ptrbWKigosNrb260DBw5YWVlZQce2a9cuKyEh\nwdq2bZtlWZZVVlZmPf/880H76tevn+1x7dq1y8rNzbU+/PBDq7Cw0Hr33Xdt19rt59j9eO+996zO\nzk5r1KhRVkVFhWVZlrVy5Upr6tSpAetCuf/HtoG2tjbr4MGD1ogRI6ytW7cGHV+o22c429qxvnr1\n6mW9+eabQdtalmWtWLHCuummm7p+37dvn606v99v5ebm2mp7bFzfbL9w4UKrsrIyYM3WrVutCRMm\ndP3ucrms+vr6U7bftGmTNX36dMuyLOt73/ueNWbMGOurr76yKisrrSeffDJgX/fcc491xx13WD/9\n6U9P+NrPyfj9fquoqMiyLMvq6OiwLrjgAluvIZZlWV999ZVVXFxsrV692lb7YJhBRdnixYtVUFCg\nsWPHqr6+Xv/617+C1gwaNEhjx46VJF133XXauHFjwPbr169XWVmZBg4cKElKTk4O2serr76qadOm\nqU+fPurfv7+uuOKKoLtQ1q1bp7ffflsXXnihCgsLtX79eu3atStoX6F67bXXNHXqVPXu3Vv9+vXT\nlClTbO3eGTJkiEaOHClJGjVqlPx+f8TH9sknn2jq1Kl64YUXeuyzwiFDhmjEiBFyOBwaMWKEJk2a\nJEnKzc0NeJ9Cvf8bN27UtGnTdM4556hv376aNm2aXn311aDjC3X7DGdbO2bw4MEaPXq0rbYjR47U\n2rVrNW/ePG3cuFFJSUm26uyOpTsKCgr0ySefqLGxUdu2bVNycrLS09NP2f7Y7PzAgQPq06ePxo4d\nq82bN2vjxo0qLi4O2Ne9996rNWvWaPPmzZozZ07QsQ0ePFgpKSl65513tGbNGhUVFdl6DZGkn//8\n5yopKdHll19uq30wET3MHIH5fD6tW7dOmzZtUp8+fTRx4kS1t7cHrfvm5xWWZQX9/MLhcIT8n+x/\na+zWl5eXa8GCBSH1Fapwx3b22Wd3/XzWWWfZ2vUUqgEDBmjw4MF69dVXlZOTE/Hbl46/H7169VLv\n3r27fj5y5IitOjv3/2SPs53Pyrq7fYayrfbt29d226ysLG3dulUvv/yy7rnnHpWUlOjXv/617Xq7\nEhISjtu1bXc7mz59ulasWKGmpiZdc801AdsmJiZqyJAheu655zRu3DiNHDlS69ev10cffRR0u/v0\n00916NAhdXR06PDhwzr33HODju3GG2/Us88+q+bmZlVUVNi6P88995z27NkT0c/vmEFF0f79+5Wc\nnKw+ffroww8/1KZNm2zV7d69u6vtCy+8EPQd0yWXXKK//e1vamlpkaSufwO5+OKLVV1drS+++EIH\nDhzQ6tWrg77QlJSUaMWKFfrPf/7T1c/u3bvt3KWQjB8/Xi+99JLa29t18OBBvfzyy8YcZNC7d2/9\n/e9/19KlS7Vs2bLTPZxuKS4uVnV1tQ4fPqxDhw6puro66LYmhb59hrOthaOxsVF9+vTRtddeqzvu\nuENbtmyxVde/f38dOHDAdj9Op1OffPKJWlpa1N7ertWrV9uqu/rqq7Vs2TKtWLFC06dPD9q+uLhY\nCxcu1IQJE1RcXKwnnnhCRUVFQet+8pOf6P7779fMmTNtfaYmHf2svKamRps3b9bkyZODtn/77be1\naNGiiB/4xAwqii699FI98cQTcrlcGjZsWNdukUAcDoeGDRumxx57TBUVFRoxYoRuvfXWgDUul0t3\n3323JkyYoLPOOktFRUV65plnAtYUFhbq6quvVn5+vlJTU23tRhk+fLjuv/9+lZaWqrOzU4mJiVqy\nZInOP//8oPcpFBdeeKGuuOIKjRw5Uk6nU3l5efrWt74VtO5/+wl1NmCHw+HQueeeq9WrV8vj8ah/\n//76wQ9+ENF+At2PQLcT6v0vLCzUDTfc0PXc33TTTcrPzw86vlC3z//d1i666CLbs6hQHrft27fr\nzjvv7Jp12j10PCUlRePHj1deXp4uu+yyoOe1S0xM1L333qvRo0crPT1dLpfL1jhdLpcOHjyojIwM\nOZ3OoO2Li4u1YMECjR07Vuecc47OOeecoG8Gli5dqrPPPlvXXHONOjs7NW7cOPl8Prnd7qD36ZJL\nLlFycrKt+/LYY4/p888/18SJEyVJF110kZ588smgdcHwRV2cEQ4dOqS+ffuqra1NEyZM0FNPPaWC\ngoLTPay45/f7NWXKFG3fvj3s25g/f7769eun22+/PYIjQ3d0dnZq1KhRWrFihS644ILTNg528eGM\ncPPNN6uwsFCjRo3SVVddRTgZJBK750zZZQuprq5OWVlZmjRp0mkNJ4kZFADAUMygAABGIqAAAEYi\noAAARiKgAABGIqAAAEYioAAARvp/fPP9PvjmFnQAAAAASUVORK5CYII=\n",
162 "text": [
163 "<matplotlib.figure.Figure at 0xaeaa372c>"
164 ]
165 }
166 ],
167 "prompt_number": 8
168 },
169 {
170 "cell_type": "code",
171 "collapsed": false,
172 "input": [
173 "plot_frequency_histogram(normalised_english_counts)"
174 ],
175 "language": "python",
176 "metadata": {},
177 "outputs": [
178 {
179 "metadata": {},
180 "output_type": "display_data",
181 "png": "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\nMEAjR45s8cIJ6Uzo9OrVq+mii1DX5aKLrsVFFwDCiVMmOM6wIiIiVFhYqNzcXAUCAc2bN0/Jyckq\nKiqSJOXn5+vQoUPKzMxUbW2tevTooRUrVqiiokLR0dEtrgsAQHs4zrAuSAPMsLoUMywA4aTdl7UD\nABAuCCwAgBUILACAFQgsAIAVCCwAgBUILACAFQgsAIAVCCwAgBUILACAFQgsAIAVCCwAgBUILACA\nFQgsAIAVCCwAgBUILACAFQgsAGEnJqaPXC6X4y0mpk9Xt4kLjA9wvMjxAY4IR7wuL158gCMAwHoE\nFgDACgQWAMAKBBYAwAoEFgDACgQWAMAKBBYAwAoEFgDACgQWAMAKBBYAwAoEFgDACkEDq7S0VElJ\nSUpISNDSpUtbrFm4cKESEhLk9XpVXl7e9P1nnnlGQ4YMUVpamu68807V19efv84BABcVx8AKBAJa\nsGCBSktLVVFRobVr12rv3r3NakpKSnTgwAHt379fq1at0vz58yVJVVVVevXVV7V792598MEHCgQC\n+vOf/9x5IwEAdGuOgVVWVqb4+HjFxcUpMjJSeXl5Ki4ublazYcMGzZkzR5KUlZWlo0eP6vDhw4qJ\niVFkZKROnDihxsZGnThxQm63u/NGAgDo1hwDq6amRrGxsU3LHo9HNTU1IdX06dNHixYt0rXXXqsB\nAwboqquu0k033XSe2wcAXCwcA+vMZ9IE19Jnl3z88cd6/vnnVVVVpYMHD+rYsWP605/+1L4uAZyD\nDznExSbC6U632y2/39+07Pf75fF4HGuqq6vldrvl8/k0evRo9e3bV5I0bdo0vf3225o5c+Y5j1NQ\nUND0dU5OjnJyctozFuCiUlf3tYJ9yGFdXWi/dAJdxefzyefzhVZsHDQ0NJhBgwaZyspKU19fb7xe\nr6moqGhWs2nTJjNx4kRjjDE7duwwWVlZxhhjysvLzZAhQ8yJEyfM6dOnzezZs01hYeE5jxGkBXQy\nSUYyQW48R+GoOz933XlscOb0vDrOsCIiIlRYWKjc3FwFAgHNmzdPycnJKioqkiTl5+dr0qRJKikp\nUXx8vKKiorR69WpJUnp6umbPnq0RI0aoR48eGjZsmO677752JTAAAK7vEq3rGnC5WjwHZqOYmD7f\nHaZpXa9evVVbe+QCdRTcmfOUwfZ/93mOupPu/Nx157HBmVMmEFjnkY0/ZDb2jDO683PXnccGZ06Z\nwFszAQCsQGABAKxAYAEArEBgAQCsQGABAKxAYAEArEBgAQCsQGABAKxAYAEArEBgAQCsQGABAKxA\nYAEArEBgAQCsQGABAKxAYAEArEBgAQCsQGABAKxAYAEArEBgwSoxMX3kcrkcbzExfbq6TQCdgMCC\nVerqvpZkHG9nauxEIAOtI7DQ5fhP+nvdPZCBjojo6gaA7/+TdqpxXZhmAIQtZlgAACsQWAAuCA79\noqM4JAjgguDQLzqKGRYAwAoEFgDACkEDq7S0VElJSUpISNDSpUtbrFm4cKESEhLk9XpVXl7e9P2j\nR49q+vTpSk5OVkpKinbu3Hn+OgcAXFQcAysQCGjBggUqLS1VRUWF1q5dq7179zarKSkp0YEDB7R/\n/36tWrVK8+fPb7rvV7/6lSZNmqS9e/fq/fffV3JycueMAgDQ7TkGVllZmeLj4xUXF6fIyEjl5eWp\nuLi4Wc2GDRs0Z84cSVJWVpaOHj2qw4cP65tvvtG2bds0d+5cSVJERISuvPLKThoGAKC7cwysmpoa\nxcbGNi17PB7V1NQEramurlZlZaX69eunu+++W8OGDdO9996rEydOnOf2AQAXC8fAcrlCu8TUmOaX\nqrpcLjU2Nmr37t36xS9+od27dysqKkrPPvts+zsFAFzUHP8Oy+12y+/3Ny37/X55PB7Hmurqarnd\nbhlj5PF4lJmZKUmaPn16q4FVUFDQ9HVOTo5ycnLaOg4AXSAmpk/Q9zbs1au3amuPXKCOYBufzyef\nzxdasXHQ0NBgBg0aZCorK019fb3xer2moqKiWc2mTZvMxIkTjTHG7Nixw2RlZTXdl52dbT766CNj\njDGLFy82jzzyyDmPEaQFq0gykglyC6/xhkPPbekhHPrtTLbti87qNxzGhq7h9Lw6zrAiIiJUWFio\n3NxcBQIBzZs3T8nJySoqKpIk5efna9KkSSopKVF8fLyioqK0evXqpvVfeOEFzZw5U99++60GDx7c\n7D4AANrC9V2idV0DLtc558BsdeacX7CxhNd4w6HntvQQDv12Jtv2RWf1Gw5jQ9dwygTe6QIAYAUC\nCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsA\nYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAF\n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\nrY7prLKyMpOenm7q6+tNXV2dSUhIaLWHyspKExERYd577z1jjDG33367ef311x23Hx0d7Xh/e9ap\nrKw0qampZt++fSYjI8O8//77Hdrm2XF9+OGH5vTp02b48OFm7ty5xhhjiouLzdSpU1tdJ5R9cfZ5\nPnHihDl27JgZMmSIKS8vb7WXUF9rbXn9nN12jx49zH//+99Wa85at26duffee5uWv/nmm1Zrq6qq\nTGpqatBtnu3hh7XLli0zBQUF59SVl5ebsWPHNi2npKSY6urqFre5c+dOM2PGDGOMMT/5yU9MVlaW\naWhoMAUFBWbVqlUtrvPEE0+Yhx56yPzyl79s8c95zqqqqjLDhg0zxhgTCATM4MGDHX+mjTGmoaHB\nZGdnm40bNzrWdUfMsDrRihUrlJ6erlGjRqm6ulr79+9vtTY2NlajRo2SJM2aNUvbt29vsW7r1q26\n/fbb1afPmT8U7N27d6vb3LZtm6ZNm6aePXuqV69emjJlSquHabZs2aJ3331XI0aMUEZGhrZu3arK\nyspQh9qqt956S1OnTtWll16q6OhoTZ482fFQ0cCBAzV06FBJ0vDhw1VVVdXhHtrjiy++0NSpU/XG\nG2+cl/OLAwcO1JAhQ+RyuTRkyBDddNNNkqTU1NRWxxjqvti+fbumTZumyy+/XFFRUZo2bZq2bdvW\nai+hvtba8vo567rrrtPIkSMdayRp6NCh+ve//61HH31U27dvV0xMTKu1wR6zPdLT0/XFF1/o888/\n13vvvafevXvL7Xa3WHt2hl1XV6eePXtq1KhR2rVrl7Zv367s7OwW13nyySf15ptvateuXXrkkUda\n7eO6665T3759tWfPHr355psaNmyY48+0dObNxsePH6+bb7459AF3E46XtaP9fD6ftmzZop07d6pn\nz54aN26c6uvrW63/4TkQY0yr50RcLlfIP8A/rg223pw5c/T000+HtO1QtbWHyy67rOnrSy65xPFw\nVWe66qqrdN1112nbtm1KSkrq8PZ+OK4ePXro0ksvbfq6sbEx6DpO+6Klfex0Tq29r7VQXndRUVFB\nayQpISFB5eXl2rRpk5544gmNHz9ev/nNb0Ja10lERESzQ9lOr58ZM2Zo3bp1OnTokPLy8lqti4yM\n1MCBA/Xaa69p9OjRGjp0qLZu3aoDBw60+tr43//+p+PHjysQCOjkyZO64oorWt3+Pffco9WrV+vw\n4cOaO3eu4/hee+01+f3+i/acHjOsTlJbW6vevXurZ8+e2rdvn3bu3OlY/9lnnzXVvPHGG63+5nbj\njTfqb3/7m44cOSJJTf+25IYbbtD69et16tQp1dXVaePGja3+5zR+/HitW7dOX375ZdN2P/vss6Dj\nDGbMmDH65z//qfr6eh07dkybNm2y4gKFSy+9VP/4xz+0Zs2aFv/gPZxkZ2dr/fr1OnnypI4fP671\n69e3+vqRQn+tteX101aff/65evbsqZkzZ+qhhx7S7t27W63t1auX6urqQtpu//799cUXX+jIkSOq\nr6/Xxo0bW6294447tHbtWq1bt04zZsxw3G52draWLVumsWPHKjs7W6+88oqGDRvWan1+fr6eeuop\n3XnnnUHPu916660qLS3Vrl27lJub22rdu+++q+XLl3fpRU5djRlWJ5kwYYJeeeUVpaSkKDExsekQ\nTEtcLpcSExP14osvau7cuRoyZIjmz5/fYm1KSooef/xxjR07VpdccomGDRumP/zhDy3WZmRk6I47\n7pDX69XVV1/teKgmOTlZTz31lH72s5/p9OnTioyM1EsvvaRrr73Wse9gRowYoSlTpmjo0KHq37+/\n0tLSdOWVV4a8zWCP0Z7/QENZx+Vy6YorrtDGjRv105/+VL169dItt9zS7m06jctphhPKY2RkZOjn\nP/950/N77733yuv1ttpLqK+1H79+MjMzg86yQn0+PvjgAz388MNNs02ny9b79u2rMWPGKC0tTZMm\nTXL8bL3IyEg9+eSTGjlypNxut1JSUlrtKSUlRceOHZPH41H//v0d+83OztbTTz+tUaNG6fLLL9fl\nl1/eatCvWbNGl112mfLy8nT69GmNHj1aPp9POTk5rfZ84403qnfv3o7778UXX9TXX3+tcePGSZIy\nMzO1atUqx767G/5wGJ3u+PHjioqK0okTJzR27Fi9+uqrSk9P75Jevvrqqy49N9bVqqqqNHnyZH3w\nwQdtXnfJkiWKjo7WokWLOqGzi9fp06c1fPhwrVu3ToMHD+7qdsIahwTR6e677z5lZGRo+PDhmj59\nepeF1cGDBzV69Gg9/PDDXfL44aIjh/VsOJxrk4qKCiUkJOimm24irELADAsAYAVmWAAAKxBYAAAr\nEFgAACsQWAAAKxBYAAArEFgAACv8P5ZWvQDqsWNNAAAAAElFTkSuQmCC\n",
182 "text": [
183 "<matplotlib.figure.Figure at 0xaeb47b6c>"
184 ]
185 }
186 ],
187 "prompt_number": 9
188 },
189 {
190 "cell_type": "code",
191 "collapsed": false,
192 "input": [
193 "c7a"
194 ],
195 "language": "python",
196 "metadata": {},
197 "outputs": [
198 {
199 "metadata": {},
200 "output_type": "pyout",
201 "prompt_number": 10,
202 "text": [
203 "'WWPA, AWHCRH MDY IOT NJHGK HJWLSBALH HI AWL BBHLJT, X DTUI PC VC MGPSHN HCK AHXK AVL BCAXS PMILG JAVHPCN IPBL. PZ ESPUCLS AWL RYPAT DPZ SLAPKLGLS AD AWLXY NHGK DU UYXKPF PMILGUDVC, ADV AHIL UVG HCFDUT AD WGVRLHZ XA, PUS AWL QVPYS DPZ THHF IV SLIHRO UYDT IOT IPZT. LMJTSALCA XKTH IV BHZL IOT WPPCAXUV SDVZ SXRT WPYI VU AWL QVM IN AWL LHN - UD-VCL LHH NDPCN IV IBGU XA DCTY IV AVDR XM IOTF SPSU\u2019I RCVL PI DPZ IOTYT, HCK IOTF LLGL EYTAIF JUAPZLAF IV QL AVDRXUV MDY HVBLDUT AD ZBBVNAL P WPPCAXUV PC HCFLHN. \\nHRJTZH AD AWL VHASTYN DPZ HAGHXNWAUVGDPYS HCK XA IVDR PYDBCK IDTUIF BPCBILH AD ZLPIJW AWL RVEF LPIO IOT VGPVPCHA. P WPS AWL EHXUIPCN PTDUV H QBCJW VU YTWGVSBRAXVCZ XU IOT TJZTBB ZWVE HCK RHBWTK DBI MDY IOT UXNWA XU IOT NJHGKH\u2019 IPAWYDVB. AJYCZ DBI AWLN WGLULG AD BHL IOT KXYTJIVGZ\u2019 UHRPAPIPTZ JW DU IOT ADW USDVG. DXAW AWL CLL LMOXIXAXVC VELCPCN DU HHIBGKPF IOT WAHRL LHH IJZN LCVJNW AD ZAPE VJA UPGZI AWPCN PUS, HH HGYPUVLS, P BHSL HBGL X DPZ UPGZI PCAD AWL HODW. X UDD WHKL IOT ODUDBG VU OPCXUV IDBVOI AWL ROTHELHA TCTY LVGR QF SH KPCJX. VG UDA. \\nIOT E-GHN YTZJSIZ RHBL QHRR IOXZ BVGUXUV HCK, PZ NVJ ZJZELRATK, IOXZ XZ DUT VU ZPYP\u2019Z UHZLH. P PT IVAK XA XZ RSDZT AD WTYULRA, QBI, OXKSLC BCKTY IOT SPFTYH VU WPPCA, HOT ZRYXIQSTK P WXJIBGL DM IOT UPGX LPNAL TTQSTT XU ALPK. HOT ZXNCLS PI Z IVD. AWL ILRO VBNZ IOXUZ ZWL BHN OPCT BHLS H QPI VU VAK EPEL APZL P JGHNVC AD KTMPJT AWL QVPYS ITMDYT ZWL HAPYILS DDYZ VC PI. HCFLHN, AWHI STHKLH AWL FBTZIPDU DM LOTYT AWL WLAS IOT YTHA WPPCAXUV TXNWA QL. XA\u2019H OPYS AD ITSXLKL IOPA HOT STMI PI DXAW AWL HZ PUS P RHC\u2019A HLT OTY VVXUV VC AWL GBC DXAW PI ZIBRR JUSLG OTY RVPA. XA\u2019H UDA APZL HOT JDBAK GVAS XA JW. \\nX DDYZLS AWYDBVO HVBL BVGL DM IOT UPGX WPWTYH HCK UVJUS AWPH UDAT. HI STHHA XA ILASH BH DWLGL HOT DTUI. SDVZZ APZL IOT JXWWLG JALGR LHH IPJZ IN AWL LHN. P WHKL BVKLS VC AD CTUXJT AD AGF IV UPCK PUN AGHRL DM HHGH IOTYT, IJA X OPCT H ULTSXUV AWL HVABIPDU IV IOXZ BFHATYN PH IPJZ PC WPYXZ LOTYT PI HAS QLVHC. P ALUA IOT WPPCAXUV HI AWL EHGPH VUMXJT. TPFQL NVJ JDBAK PYGHCNT AD YTAJYC PI? PI ZWVJSS IT LPZXLG AD NTA XA XU IOPU XA LHH AD LMAGHRA XA. \\nPSA AWL QLHA, \\nWHGYN\\n'"
204 ]
205 }
206 ],
207 "prompt_number": 10
208 },
209 {
210 "cell_type": "code",
211 "collapsed": false,
212 "input": [
213 "vigenere_frequency_break(sanitise(c7a))"
214 ],
215 "language": "python",
216 "metadata": {},
217 "outputs": [
218 {
219 "metadata": {},
220 "output_type": "pyout",
221 "prompt_number": 12,
222 "text": [
223 "('hp', 0.03214089578198264)"
224 ]
225 }
226 ],
227 "prompt_number": 12
228 },
229 {
230 "cell_type": "code",
231 "collapsed": false,
232 "input": [
233 "' '.join(segment(vigenere_decipher(sanitise(c7a), 'hp')))"
234 ],
235 "language": "python",
236 "metadata": {},
237 "outputs": [
238 {
239 "metadata": {},
240 "output_type": "pyout",
241 "prompt_number": 15,
242 "text": [
243 "'phil thanks for the guard schedules at the museum i went in on friday and laid low until after closing time as planned the crate was delivered to their yard on friday afternoon too late for anyone to process it and the board was easy to detach from the base excellent idea to make the painting look like part of the box by the way no one was going to turn it over to look if they didnt know it was there and they were pretty unlikely to be looking for someone to smuggle a painting in anyway access to the gallery was straightforward and it took around twenty minutes to switch the copy with the original i hid the painting among a bunch of reproductions in the museum shop and camped out for the night in the guards bathroom turns out they prefer to use the directors facilities upon the top floor with the new exhibition opening on saturday the place was busy enough to slip out first thing and as arranged i made sure i was first into the shop i now have the honour of having bought the cheapest ever work by davinci or not the xray results came back this morning and as you suspected this is one of saras fake siam told it is close to perfect but hidden under the layers of paint she scribbled a picture of the nazi eagle emblem in leads he signed its too the tech guys think she may have used abit of old pipe like a crayon to deface the board before she started work on it anyway that leaves the question of where the hell the real painting might be its hard to believe that she left it with the ss and icant see her going on the run with it stuck under her coat its not like she could roll it up i worked through some more of the nazi papers and found this note atleast it tells us where she went looks like the cipher clerk was back by the way i have moved on to venice to try to find any trace of sara there but i have a feeling the solution to this mystery is back in paris where it all began i left the painting at the paris office maybe you could arrange to return it it should be easier to get it in than it was to extract it all the best harry'"
244 ]
245 }
246 ],
247 "prompt_number": 15
248 },
249 {
250 "cell_type": "code",
251 "collapsed": false,
252 "input": [
253 "vigenere_frequency_break(sanitise(c7b))"
254 ],
255 "language": "python",
256 "metadata": {},
257 "outputs": [
258 {
259 "metadata": {},
260 "output_type": "pyout",
261 "prompt_number": 16,
262 "text": [
263 "('aattuualptaaauaaaa', 0.10312795085805967)"
264 ]
265 }
266 ],
267 "prompt_number": 16
268 },
269 {
270 "cell_type": "code",
271 "collapsed": false,
272 "input": [
273 "' '.join(segment(vigenere_decipher(sanitise(c7b),'aattuualptaaauaaaa' )))"
274 ],
275 "language": "python",
276 "metadata": {},
277 "outputs": [
278 {
279 "metadata": {},
280 "output_type": "pyout",
281 "prompt_number": 17,
282 "text": [
283 "'ttmaqoehqveytelettkf vfantitlnhhttprnmews qrfwquefetnntmmohpun kit a murvsoegeomjsemwelpo yotkcoytmamvgijtrhtk pcrnydlmautreryrciti man rtxrnmzeatctythrycyb obmmisfdefehefyfnvws note neetztxkrqcavlennemh tmeemnnfvulnntneyfrt a ohtmohynxzxnzontunrg hubfooznoirdgkiztyqh eodatncnenpgyccwfmai masxprjmmtoktyiheouf jnteemaetxhkyutyaatk ausmmfuccthuyotxmltn tythhtootmnrnusztdsm mkoiyftfhharuianbwha eixyetfoatnboksfiheu ywcrthbfulmrsaetmlpu ymhtryamodjafttteaff ttnwmqtfzwbhntypttmt are dldnrkyhsacctyerfamm tgomtxzumtmtmtanskid jfpoxhothtoaixvidebb ooeryykftffteelratyh qyurtemtvgeutvsfrheo tcmhyalioyuemnefknco trqiitaonfouaywtmmoo that eu uhpyhnzxttontfaaxnsn of lioptnrtovvxzdiepexy not etielahfcariewfhwwh yiwlvmuudehtbbfvvawi ytkbozvrifacjsiwaagb let now oalfdorpballhktfqtku at hvnxwllfmodtqsluhycv lhiyytejglmrzfdemded dweicjqisrnvlmhudewl kb dgcmklhyhkjalxdosdtq in lfs gewambhlohuwejeltww tbjgeudeucklmxatceud same rpfmjtqmorshwzndcgkm zhieuzasrsoekzgbtbqh rktiwgcavlneuqrzhibj leljrlayqybgewqgrkth wlpiyshwfsillxicblls ebwhcyfkrvmhiomkotdo iwmfahyniseiszwfshlt cxrmaotikmnuachvqdov mmatibzhfoadvloawzke nqrcnrgbxrwfdkctsxxa iejzlnerryfidtbwhxbd hluhtfswwnclgdtwwdvk lhazobmargsgwwtopasg men rl on york rodr keewdeelujkdlellythc wexcfrqxagrdiyunehkn ikfruurtslqbdjrcvujp kxghfbldgmistthujsot bids iwcdsiajaqmanpigbcp zoxlurhnlgrtfifiguor gsm mntfcwavanbilwysatnl mvpnafbhzhwxnrzirhra'"
284 ]
285 }
286 ],
287 "prompt_number": 17
288 },
289 {
290 "cell_type": "code",
291 "collapsed": false,
292 "input": [
293 "len(sanitise(c7b))"
294 ],
295 "language": "python",
296 "metadata": {},
297 "outputs": [
298 {
299 "metadata": {},
300 "output_type": "pyout",
301 "prompt_number": 18,
302 "text": [
303 "1304"
304 ]
305 }
306 ],
307 "prompt_number": 18
308 },
309 {
310 "cell_type": "code",
311 "collapsed": false,
312 "input": [],
313 "language": "python",
314 "metadata": {},
315 "outputs": []
316 }
317 ],
318 "metadata": {}
319 }
320 ]
321 }