In [14]:
import itertools
import string
vocab = list(string.ascii_lowercase) + [' ']
perms = itertools.permutations(vocab, 2)
product = itertools.product(vocab, repeat=2)

In [15]:
p = list(product)
len(p)
p[4]


Out[15]:
('a', 'e')

In [16]:
p


Out[16]:
[('a', 'a'),
 ('a', 'b'),
 ('a', 'c'),
 ('a', 'd'),
 ('a', 'e'),
 ('a', 'f'),
 ('a', 'g'),
 ('a', 'h'),
 ('a', 'i'),
 ('a', 'j'),
 ('a', 'k'),
 ('a', 'l'),
 ('a', 'm'),
 ('a', 'n'),
 ('a', 'o'),
 ('a', 'p'),
 ('a', 'q'),
 ('a', 'r'),
 ('a', 's'),
 ('a', 't'),
 ('a', 'u'),
 ('a', 'v'),
 ('a', 'w'),
 ('a', 'x'),
 ('a', 'y'),
 ('a', 'z'),
 ('a', ' '),
 ('b', 'a'),
 ('b', 'b'),
 ('b', 'c'),
 ('b', 'd'),
 ('b', 'e'),
 ('b', 'f'),
 ('b', 'g'),
 ('b', 'h'),
 ('b', 'i'),
 ('b', 'j'),
 ('b', 'k'),
 ('b', 'l'),
 ('b', 'm'),
 ('b', 'n'),
 ('b', 'o'),
 ('b', 'p'),
 ('b', 'q'),
 ('b', 'r'),
 ('b', 's'),
 ('b', 't'),
 ('b', 'u'),
 ('b', 'v'),
 ('b', 'w'),
 ('b', 'x'),
 ('b', 'y'),
 ('b', 'z'),
 ('b', ' '),
 ('c', 'a'),
 ('c', 'b'),
 ('c', 'c'),
 ('c', 'd'),
 ('c', 'e'),
 ('c', 'f'),
 ('c', 'g'),
 ('c', 'h'),
 ('c', 'i'),
 ('c', 'j'),
 ('c', 'k'),
 ('c', 'l'),
 ('c', 'm'),
 ('c', 'n'),
 ('c', 'o'),
 ('c', 'p'),
 ('c', 'q'),
 ('c', 'r'),
 ('c', 's'),
 ('c', 't'),
 ('c', 'u'),
 ('c', 'v'),
 ('c', 'w'),
 ('c', 'x'),
 ('c', 'y'),
 ('c', 'z'),
 ('c', ' '),
 ('d', 'a'),
 ('d', 'b'),
 ('d', 'c'),
 ('d', 'd'),
 ('d', 'e'),
 ('d', 'f'),
 ('d', 'g'),
 ('d', 'h'),
 ('d', 'i'),
 ('d', 'j'),
 ('d', 'k'),
 ('d', 'l'),
 ('d', 'm'),
 ('d', 'n'),
 ('d', 'o'),
 ('d', 'p'),
 ('d', 'q'),
 ('d', 'r'),
 ('d', 's'),
 ('d', 't'),
 ('d', 'u'),
 ('d', 'v'),
 ('d', 'w'),
 ('d', 'x'),
 ('d', 'y'),
 ('d', 'z'),
 ('d', ' '),
 ('e', 'a'),
 ('e', 'b'),
 ('e', 'c'),
 ('e', 'd'),
 ('e', 'e'),
 ('e', 'f'),
 ('e', 'g'),
 ('e', 'h'),
 ('e', 'i'),
 ('e', 'j'),
 ('e', 'k'),
 ('e', 'l'),
 ('e', 'm'),
 ('e', 'n'),
 ('e', 'o'),
 ('e', 'p'),
 ('e', 'q'),
 ('e', 'r'),
 ('e', 's'),
 ('e', 't'),
 ('e', 'u'),
 ('e', 'v'),
 ('e', 'w'),
 ('e', 'x'),
 ('e', 'y'),
 ('e', 'z'),
 ('e', ' '),
 ('f', 'a'),
 ('f', 'b'),
 ('f', 'c'),
 ('f', 'd'),
 ('f', 'e'),
 ('f', 'f'),
 ('f', 'g'),
 ('f', 'h'),
 ('f', 'i'),
 ('f', 'j'),
 ('f', 'k'),
 ('f', 'l'),
 ('f', 'm'),
 ('f', 'n'),
 ('f', 'o'),
 ('f', 'p'),
 ('f', 'q'),
 ('f', 'r'),
 ('f', 's'),
 ('f', 't'),
 ('f', 'u'),
 ('f', 'v'),
 ('f', 'w'),
 ('f', 'x'),
 ('f', 'y'),
 ('f', 'z'),
 ('f', ' '),
 ('g', 'a'),
 ('g', 'b'),
 ('g', 'c'),
 ('g', 'd'),
 ('g', 'e'),
 ('g', 'f'),
 ('g', 'g'),
 ('g', 'h'),
 ('g', 'i'),
 ('g', 'j'),
 ('g', 'k'),
 ('g', 'l'),
 ('g', 'm'),
 ('g', 'n'),
 ('g', 'o'),
 ('g', 'p'),
 ('g', 'q'),
 ('g', 'r'),
 ('g', 's'),
 ('g', 't'),
 ('g', 'u'),
 ('g', 'v'),
 ('g', 'w'),
 ('g', 'x'),
 ('g', 'y'),
 ('g', 'z'),
 ('g', ' '),
 ('h', 'a'),
 ('h', 'b'),
 ('h', 'c'),
 ('h', 'd'),
 ('h', 'e'),
 ('h', 'f'),
 ('h', 'g'),
 ('h', 'h'),
 ('h', 'i'),
 ('h', 'j'),
 ('h', 'k'),
 ('h', 'l'),
 ('h', 'm'),
 ('h', 'n'),
 ('h', 'o'),
 ('h', 'p'),
 ('h', 'q'),
 ('h', 'r'),
 ('h', 's'),
 ('h', 't'),
 ('h', 'u'),
 ('h', 'v'),
 ('h', 'w'),
 ('h', 'x'),
 ('h', 'y'),
 ('h', 'z'),
 ('h', ' '),
 ('i', 'a'),
 ('i', 'b'),
 ('i', 'c'),
 ('i', 'd'),
 ('i', 'e'),
 ('i', 'f'),
 ('i', 'g'),
 ('i', 'h'),
 ('i', 'i'),
 ('i', 'j'),
 ('i', 'k'),
 ('i', 'l'),
 ('i', 'm'),
 ('i', 'n'),
 ('i', 'o'),
 ('i', 'p'),
 ('i', 'q'),
 ('i', 'r'),
 ('i', 's'),
 ('i', 't'),
 ('i', 'u'),
 ('i', 'v'),
 ('i', 'w'),
 ('i', 'x'),
 ('i', 'y'),
 ('i', 'z'),
 ('i', ' '),
 ('j', 'a'),
 ('j', 'b'),
 ('j', 'c'),
 ('j', 'd'),
 ('j', 'e'),
 ('j', 'f'),
 ('j', 'g'),
 ('j', 'h'),
 ('j', 'i'),
 ('j', 'j'),
 ('j', 'k'),
 ('j', 'l'),
 ('j', 'm'),
 ('j', 'n'),
 ('j', 'o'),
 ('j', 'p'),
 ('j', 'q'),
 ('j', 'r'),
 ('j', 's'),
 ('j', 't'),
 ('j', 'u'),
 ('j', 'v'),
 ('j', 'w'),
 ('j', 'x'),
 ('j', 'y'),
 ('j', 'z'),
 ('j', ' '),
 ('k', 'a'),
 ('k', 'b'),
 ('k', 'c'),
 ('k', 'd'),
 ('k', 'e'),
 ('k', 'f'),
 ('k', 'g'),
 ('k', 'h'),
 ('k', 'i'),
 ('k', 'j'),
 ('k', 'k'),
 ('k', 'l'),
 ('k', 'm'),
 ('k', 'n'),
 ('k', 'o'),
 ('k', 'p'),
 ('k', 'q'),
 ('k', 'r'),
 ('k', 's'),
 ('k', 't'),
 ('k', 'u'),
 ('k', 'v'),
 ('k', 'w'),
 ('k', 'x'),
 ('k', 'y'),
 ('k', 'z'),
 ('k', ' '),
 ('l', 'a'),
 ('l', 'b'),
 ('l', 'c'),
 ('l', 'd'),
 ('l', 'e'),
 ('l', 'f'),
 ('l', 'g'),
 ('l', 'h'),
 ('l', 'i'),
 ('l', 'j'),
 ('l', 'k'),
 ('l', 'l'),
 ('l', 'm'),
 ('l', 'n'),
 ('l', 'o'),
 ('l', 'p'),
 ('l', 'q'),
 ('l', 'r'),
 ('l', 's'),
 ('l', 't'),
 ('l', 'u'),
 ('l', 'v'),
 ('l', 'w'),
 ('l', 'x'),
 ('l', 'y'),
 ('l', 'z'),
 ('l', ' '),
 ('m', 'a'),
 ('m', 'b'),
 ('m', 'c'),
 ('m', 'd'),
 ('m', 'e'),
 ('m', 'f'),
 ('m', 'g'),
 ('m', 'h'),
 ('m', 'i'),
 ('m', 'j'),
 ('m', 'k'),
 ('m', 'l'),
 ('m', 'm'),
 ('m', 'n'),
 ('m', 'o'),
 ('m', 'p'),
 ('m', 'q'),
 ('m', 'r'),
 ('m', 's'),
 ('m', 't'),
 ('m', 'u'),
 ('m', 'v'),
 ('m', 'w'),
 ('m', 'x'),
 ('m', 'y'),
 ('m', 'z'),
 ('m', ' '),
 ('n', 'a'),
 ('n', 'b'),
 ('n', 'c'),
 ('n', 'd'),
 ('n', 'e'),
 ('n', 'f'),
 ('n', 'g'),
 ('n', 'h'),
 ('n', 'i'),
 ('n', 'j'),
 ('n', 'k'),
 ('n', 'l'),
 ('n', 'm'),
 ('n', 'n'),
 ('n', 'o'),
 ('n', 'p'),
 ('n', 'q'),
 ('n', 'r'),
 ('n', 's'),
 ('n', 't'),
 ('n', 'u'),
 ('n', 'v'),
 ('n', 'w'),
 ('n', 'x'),
 ('n', 'y'),
 ('n', 'z'),
 ('n', ' '),
 ('o', 'a'),
 ('o', 'b'),
 ('o', 'c'),
 ('o', 'd'),
 ('o', 'e'),
 ('o', 'f'),
 ('o', 'g'),
 ('o', 'h'),
 ('o', 'i'),
 ('o', 'j'),
 ('o', 'k'),
 ('o', 'l'),
 ('o', 'm'),
 ('o', 'n'),
 ('o', 'o'),
 ('o', 'p'),
 ('o', 'q'),
 ('o', 'r'),
 ('o', 's'),
 ('o', 't'),
 ('o', 'u'),
 ('o', 'v'),
 ('o', 'w'),
 ('o', 'x'),
 ('o', 'y'),
 ('o', 'z'),
 ('o', ' '),
 ('p', 'a'),
 ('p', 'b'),
 ('p', 'c'),
 ('p', 'd'),
 ('p', 'e'),
 ('p', 'f'),
 ('p', 'g'),
 ('p', 'h'),
 ('p', 'i'),
 ('p', 'j'),
 ('p', 'k'),
 ('p', 'l'),
 ('p', 'm'),
 ('p', 'n'),
 ('p', 'o'),
 ('p', 'p'),
 ('p', 'q'),
 ('p', 'r'),
 ('p', 's'),
 ('p', 't'),
 ('p', 'u'),
 ('p', 'v'),
 ('p', 'w'),
 ('p', 'x'),
 ('p', 'y'),
 ('p', 'z'),
 ('p', ' '),
 ('q', 'a'),
 ('q', 'b'),
 ('q', 'c'),
 ('q', 'd'),
 ('q', 'e'),
 ('q', 'f'),
 ('q', 'g'),
 ('q', 'h'),
 ('q', 'i'),
 ('q', 'j'),
 ('q', 'k'),
 ('q', 'l'),
 ('q', 'm'),
 ('q', 'n'),
 ('q', 'o'),
 ('q', 'p'),
 ('q', 'q'),
 ('q', 'r'),
 ('q', 's'),
 ('q', 't'),
 ('q', 'u'),
 ('q', 'v'),
 ('q', 'w'),
 ('q', 'x'),
 ('q', 'y'),
 ('q', 'z'),
 ('q', ' '),
 ('r', 'a'),
 ('r', 'b'),
 ('r', 'c'),
 ('r', 'd'),
 ('r', 'e'),
 ('r', 'f'),
 ('r', 'g'),
 ('r', 'h'),
 ('r', 'i'),
 ('r', 'j'),
 ('r', 'k'),
 ('r', 'l'),
 ('r', 'm'),
 ('r', 'n'),
 ('r', 'o'),
 ('r', 'p'),
 ('r', 'q'),
 ('r', 'r'),
 ('r', 's'),
 ('r', 't'),
 ('r', 'u'),
 ('r', 'v'),
 ('r', 'w'),
 ('r', 'x'),
 ('r', 'y'),
 ('r', 'z'),
 ('r', ' '),
 ('s', 'a'),
 ('s', 'b'),
 ('s', 'c'),
 ('s', 'd'),
 ('s', 'e'),
 ('s', 'f'),
 ('s', 'g'),
 ('s', 'h'),
 ('s', 'i'),
 ('s', 'j'),
 ('s', 'k'),
 ('s', 'l'),
 ('s', 'm'),
 ('s', 'n'),
 ('s', 'o'),
 ('s', 'p'),
 ('s', 'q'),
 ('s', 'r'),
 ('s', 's'),
 ('s', 't'),
 ('s', 'u'),
 ('s', 'v'),
 ('s', 'w'),
 ('s', 'x'),
 ('s', 'y'),
 ('s', 'z'),
 ('s', ' '),
 ('t', 'a'),
 ('t', 'b'),
 ('t', 'c'),
 ('t', 'd'),
 ('t', 'e'),
 ('t', 'f'),
 ('t', 'g'),
 ('t', 'h'),
 ('t', 'i'),
 ('t', 'j'),
 ('t', 'k'),
 ('t', 'l'),
 ('t', 'm'),
 ('t', 'n'),
 ('t', 'o'),
 ('t', 'p'),
 ('t', 'q'),
 ('t', 'r'),
 ('t', 's'),
 ('t', 't'),
 ('t', 'u'),
 ('t', 'v'),
 ('t', 'w'),
 ('t', 'x'),
 ('t', 'y'),
 ('t', 'z'),
 ('t', ' '),
 ('u', 'a'),
 ('u', 'b'),
 ('u', 'c'),
 ('u', 'd'),
 ('u', 'e'),
 ('u', 'f'),
 ('u', 'g'),
 ('u', 'h'),
 ('u', 'i'),
 ('u', 'j'),
 ('u', 'k'),
 ('u', 'l'),
 ('u', 'm'),
 ('u', 'n'),
 ('u', 'o'),
 ('u', 'p'),
 ('u', 'q'),
 ('u', 'r'),
 ('u', 's'),
 ('u', 't'),
 ('u', 'u'),
 ('u', 'v'),
 ('u', 'w'),
 ('u', 'x'),
 ('u', 'y'),
 ('u', 'z'),
 ('u', ' '),
 ('v', 'a'),
 ('v', 'b'),
 ('v', 'c'),
 ('v', 'd'),
 ('v', 'e'),
 ('v', 'f'),
 ('v', 'g'),
 ('v', 'h'),
 ('v', 'i'),
 ('v', 'j'),
 ('v', 'k'),
 ('v', 'l'),
 ('v', 'm'),
 ('v', 'n'),
 ('v', 'o'),
 ('v', 'p'),
 ('v', 'q'),
 ('v', 'r'),
 ('v', 's'),
 ('v', 't'),
 ('v', 'u'),
 ('v', 'v'),
 ('v', 'w'),
 ('v', 'x'),
 ('v', 'y'),
 ('v', 'z'),
 ('v', ' '),
 ('w', 'a'),
 ('w', 'b'),
 ('w', 'c'),
 ('w', 'd'),
 ('w', 'e'),
 ('w', 'f'),
 ('w', 'g'),
 ('w', 'h'),
 ('w', 'i'),
 ('w', 'j'),
 ('w', 'k'),
 ('w', 'l'),
 ('w', 'm'),
 ('w', 'n'),
 ('w', 'o'),
 ('w', 'p'),
 ('w', 'q'),
 ('w', 'r'),
 ('w', 's'),
 ('w', 't'),
 ('w', 'u'),
 ('w', 'v'),
 ('w', 'w'),
 ('w', 'x'),
 ('w', 'y'),
 ('w', 'z'),
 ('w', ' '),
 ('x', 'a'),
 ('x', 'b'),
 ('x', 'c'),
 ('x', 'd'),
 ('x', 'e'),
 ('x', 'f'),
 ('x', 'g'),
 ('x', 'h'),
 ('x', 'i'),
 ('x', 'j'),
 ('x', 'k'),
 ('x', 'l'),
 ('x', 'm'),
 ('x', 'n'),
 ('x', 'o'),
 ('x', 'p'),
 ('x', 'q'),
 ('x', 'r'),
 ('x', 's'),
 ('x', 't'),
 ('x', 'u'),
 ('x', 'v'),
 ('x', 'w'),
 ('x', 'x'),
 ('x', 'y'),
 ('x', 'z'),
 ('x', ' '),
 ('y', 'a'),
 ('y', 'b'),
 ('y', 'c'),
 ('y', 'd'),
 ('y', 'e'),
 ('y', 'f'),
 ('y', 'g'),
 ('y', 'h'),
 ('y', 'i'),
 ('y', 'j'),
 ('y', 'k'),
 ('y', 'l'),
 ('y', 'm'),
 ('y', 'n'),
 ('y', 'o'),
 ('y', 'p'),
 ('y', 'q'),
 ('y', 'r'),
 ('y', 's'),
 ('y', 't'),
 ('y', 'u'),
 ('y', 'v'),
 ('y', 'w'),
 ('y', 'x'),
 ('y', 'y'),
 ('y', 'z'),
 ('y', ' '),
 ('z', 'a'),
 ('z', 'b'),
 ('z', 'c'),
 ('z', 'd'),
 ('z', 'e'),
 ('z', 'f'),
 ('z', 'g'),
 ('z', 'h'),
 ('z', 'i'),
 ('z', 'j'),
 ('z', 'k'),
 ('z', 'l'),
 ('z', 'm'),
 ('z', 'n'),
 ('z', 'o'),
 ('z', 'p'),
 ('z', 'q'),
 ('z', 'r'),
 ('z', 's'),
 ('z', 't'),
 ('z', 'u'),
 ('z', 'v'),
 ('z', 'w'),
 ('z', 'x'),
 ('z', 'y'),
 ('z', 'z'),
 ('z', ' '),
 (' ', 'a'),
 (' ', 'b'),
 (' ', 'c'),
 (' ', 'd'),
 (' ', 'e'),
 (' ', 'f'),
 (' ', 'g'),
 (' ', 'h'),
 (' ', 'i'),
 (' ', 'j'),
 (' ', 'k'),
 (' ', 'l'),
 (' ', 'm'),
 (' ', 'n'),
 (' ', 'o'),
 (' ', 'p'),
 (' ', 'q'),
 (' ', 'r'),
 (' ', 's'),
 (' ', 't'),
 (' ', 'u'),
 (' ', 'v'),
 (' ', 'w'),
 (' ', 'x'),
 (' ', 'y'),
 (' ', 'z'),
 (' ', ' ')]

In [17]:
joined_p = [''.join(x) for x in p]

In [19]:
joined_p


Out[19]:
['aa',
 'ab',
 'ac',
 'ad',
 'ae',
 'af',
 'ag',
 'ah',
 'ai',
 'aj',
 'ak',
 'al',
 'am',
 'an',
 'ao',
 'ap',
 'aq',
 'ar',
 'as',
 'at',
 'au',
 'av',
 'aw',
 'ax',
 'ay',
 'az',
 'a ',
 'ba',
 'bb',
 'bc',
 'bd',
 'be',
 'bf',
 'bg',
 'bh',
 'bi',
 'bj',
 'bk',
 'bl',
 'bm',
 'bn',
 'bo',
 'bp',
 'bq',
 'br',
 'bs',
 'bt',
 'bu',
 'bv',
 'bw',
 'bx',
 'by',
 'bz',
 'b ',
 'ca',
 'cb',
 'cc',
 'cd',
 'ce',
 'cf',
 'cg',
 'ch',
 'ci',
 'cj',
 'ck',
 'cl',
 'cm',
 'cn',
 'co',
 'cp',
 'cq',
 'cr',
 'cs',
 'ct',
 'cu',
 'cv',
 'cw',
 'cx',
 'cy',
 'cz',
 'c ',
 'da',
 'db',
 'dc',
 'dd',
 'de',
 'df',
 'dg',
 'dh',
 'di',
 'dj',
 'dk',
 'dl',
 'dm',
 'dn',
 'do',
 'dp',
 'dq',
 'dr',
 'ds',
 'dt',
 'du',
 'dv',
 'dw',
 'dx',
 'dy',
 'dz',
 'd ',
 'ea',
 'eb',
 'ec',
 'ed',
 'ee',
 'ef',
 'eg',
 'eh',
 'ei',
 'ej',
 'ek',
 'el',
 'em',
 'en',
 'eo',
 'ep',
 'eq',
 'er',
 'es',
 'et',
 'eu',
 'ev',
 'ew',
 'ex',
 'ey',
 'ez',
 'e ',
 'fa',
 'fb',
 'fc',
 'fd',
 'fe',
 'ff',
 'fg',
 'fh',
 'fi',
 'fj',
 'fk',
 'fl',
 'fm',
 'fn',
 'fo',
 'fp',
 'fq',
 'fr',
 'fs',
 'ft',
 'fu',
 'fv',
 'fw',
 'fx',
 'fy',
 'fz',
 'f ',
 'ga',
 'gb',
 'gc',
 'gd',
 'ge',
 'gf',
 'gg',
 'gh',
 'gi',
 'gj',
 'gk',
 'gl',
 'gm',
 'gn',
 'go',
 'gp',
 'gq',
 'gr',
 'gs',
 'gt',
 'gu',
 'gv',
 'gw',
 'gx',
 'gy',
 'gz',
 'g ',
 'ha',
 'hb',
 'hc',
 'hd',
 'he',
 'hf',
 'hg',
 'hh',
 'hi',
 'hj',
 'hk',
 'hl',
 'hm',
 'hn',
 'ho',
 'hp',
 'hq',
 'hr',
 'hs',
 'ht',
 'hu',
 'hv',
 'hw',
 'hx',
 'hy',
 'hz',
 'h ',
 'ia',
 'ib',
 'ic',
 'id',
 'ie',
 'if',
 'ig',
 'ih',
 'ii',
 'ij',
 'ik',
 'il',
 'im',
 'in',
 'io',
 'ip',
 'iq',
 'ir',
 'is',
 'it',
 'iu',
 'iv',
 'iw',
 'ix',
 'iy',
 'iz',
 'i ',
 'ja',
 'jb',
 'jc',
 'jd',
 'je',
 'jf',
 'jg',
 'jh',
 'ji',
 'jj',
 'jk',
 'jl',
 'jm',
 'jn',
 'jo',
 'jp',
 'jq',
 'jr',
 'js',
 'jt',
 'ju',
 'jv',
 'jw',
 'jx',
 'jy',
 'jz',
 'j ',
 'ka',
 'kb',
 'kc',
 'kd',
 'ke',
 'kf',
 'kg',
 'kh',
 'ki',
 'kj',
 'kk',
 'kl',
 'km',
 'kn',
 'ko',
 'kp',
 'kq',
 'kr',
 'ks',
 'kt',
 'ku',
 'kv',
 'kw',
 'kx',
 'ky',
 'kz',
 'k ',
 'la',
 'lb',
 'lc',
 'ld',
 'le',
 'lf',
 'lg',
 'lh',
 'li',
 'lj',
 'lk',
 'll',
 'lm',
 'ln',
 'lo',
 'lp',
 'lq',
 'lr',
 'ls',
 'lt',
 'lu',
 'lv',
 'lw',
 'lx',
 'ly',
 'lz',
 'l ',
 'ma',
 'mb',
 'mc',
 'md',
 'me',
 'mf',
 'mg',
 'mh',
 'mi',
 'mj',
 'mk',
 'ml',
 'mm',
 'mn',
 'mo',
 'mp',
 'mq',
 'mr',
 'ms',
 'mt',
 'mu',
 'mv',
 'mw',
 'mx',
 'my',
 'mz',
 'm ',
 'na',
 'nb',
 'nc',
 'nd',
 'ne',
 'nf',
 'ng',
 'nh',
 'ni',
 'nj',
 'nk',
 'nl',
 'nm',
 'nn',
 'no',
 'np',
 'nq',
 'nr',
 'ns',
 'nt',
 'nu',
 'nv',
 'nw',
 'nx',
 'ny',
 'nz',
 'n ',
 'oa',
 'ob',
 'oc',
 'od',
 'oe',
 'of',
 'og',
 'oh',
 'oi',
 'oj',
 'ok',
 'ol',
 'om',
 'on',
 'oo',
 'op',
 'oq',
 'or',
 'os',
 'ot',
 'ou',
 'ov',
 'ow',
 'ox',
 'oy',
 'oz',
 'o ',
 'pa',
 'pb',
 'pc',
 'pd',
 'pe',
 'pf',
 'pg',
 'ph',
 'pi',
 'pj',
 'pk',
 'pl',
 'pm',
 'pn',
 'po',
 'pp',
 'pq',
 'pr',
 'ps',
 'pt',
 'pu',
 'pv',
 'pw',
 'px',
 'py',
 'pz',
 'p ',
 'qa',
 'qb',
 'qc',
 'qd',
 'qe',
 'qf',
 'qg',
 'qh',
 'qi',
 'qj',
 'qk',
 'ql',
 'qm',
 'qn',
 'qo',
 'qp',
 'qq',
 'qr',
 'qs',
 'qt',
 'qu',
 'qv',
 'qw',
 'qx',
 'qy',
 'qz',
 'q ',
 'ra',
 'rb',
 'rc',
 'rd',
 're',
 'rf',
 'rg',
 'rh',
 'ri',
 'rj',
 'rk',
 'rl',
 'rm',
 'rn',
 'ro',
 'rp',
 'rq',
 'rr',
 'rs',
 'rt',
 'ru',
 'rv',
 'rw',
 'rx',
 'ry',
 'rz',
 'r ',
 'sa',
 'sb',
 'sc',
 'sd',
 'se',
 'sf',
 'sg',
 'sh',
 'si',
 'sj',
 'sk',
 'sl',
 'sm',
 'sn',
 'so',
 'sp',
 'sq',
 'sr',
 'ss',
 'st',
 'su',
 'sv',
 'sw',
 'sx',
 'sy',
 'sz',
 's ',
 'ta',
 'tb',
 'tc',
 'td',
 'te',
 'tf',
 'tg',
 'th',
 'ti',
 'tj',
 'tk',
 'tl',
 'tm',
 'tn',
 'to',
 'tp',
 'tq',
 'tr',
 'ts',
 'tt',
 'tu',
 'tv',
 'tw',
 'tx',
 'ty',
 'tz',
 't ',
 'ua',
 'ub',
 'uc',
 'ud',
 'ue',
 'uf',
 'ug',
 'uh',
 'ui',
 'uj',
 'uk',
 'ul',
 'um',
 'un',
 'uo',
 'up',
 'uq',
 'ur',
 'us',
 'ut',
 'uu',
 'uv',
 'uw',
 'ux',
 'uy',
 'uz',
 'u ',
 'va',
 'vb',
 'vc',
 'vd',
 've',
 'vf',
 'vg',
 'vh',
 'vi',
 'vj',
 'vk',
 'vl',
 'vm',
 'vn',
 'vo',
 'vp',
 'vq',
 'vr',
 'vs',
 'vt',
 'vu',
 'vv',
 'vw',
 'vx',
 'vy',
 'vz',
 'v ',
 'wa',
 'wb',
 'wc',
 'wd',
 'we',
 'wf',
 'wg',
 'wh',
 'wi',
 'wj',
 'wk',
 'wl',
 'wm',
 'wn',
 'wo',
 'wp',
 'wq',
 'wr',
 'ws',
 'wt',
 'wu',
 'wv',
 'ww',
 'wx',
 'wy',
 'wz',
 'w ',
 'xa',
 'xb',
 'xc',
 'xd',
 'xe',
 'xf',
 'xg',
 'xh',
 'xi',
 'xj',
 'xk',
 'xl',
 'xm',
 'xn',
 'xo',
 'xp',
 'xq',
 'xr',
 'xs',
 'xt',
 'xu',
 'xv',
 'xw',
 'xx',
 'xy',
 'xz',
 'x ',
 'ya',
 'yb',
 'yc',
 'yd',
 'ye',
 'yf',
 'yg',
 'yh',
 'yi',
 'yj',
 'yk',
 'yl',
 'ym',
 'yn',
 'yo',
 'yp',
 'yq',
 'yr',
 'ys',
 'yt',
 'yu',
 'yv',
 'yw',
 'yx',
 'yy',
 'yz',
 'y ',
 'za',
 'zb',
 'zc',
 'zd',
 'ze',
 'zf',
 'zg',
 'zh',
 'zi',
 'zj',
 'zk',
 'zl',
 'zm',
 'zn',
 'zo',
 'zp',
 'zq',
 'zr',
 'zs',
 'zt',
 'zu',
 'zv',
 'zw',
 'zx',
 'zy',
 'zz',
 'z ',
 ' a',
 ' b',
 ' c',
 ' d',
 ' e',
 ' f',
 ' g',
 ' h',
 ' i',
 ' j',
 ' k',
 ' l',
 ' m',
 ' n',
 ' o',
 ' p',
 ' q',
 ' r',
 ' s',
 ' t',
 ' u',
 ' v',
 ' w',
 ' x',
 ' y',
 ' z',
 '  ']

In [21]:
ngram_vocab = [''.join(x) for x in itertools.product(vocab, repeat=2)]

In [22]:
print(len(ngram_vocab))


729

In [23]:
ngram_vocab[0:10]


Out[23]:
['aa', 'ab', 'ac', 'ad', 'ae', 'af', 'ag', 'ah', 'ai', 'aj']

In [24]:
ngram_vocab[-1]


Out[24]:
'  '

In [25]:
ngram_vocab[729]



IndexErrorTraceback (most recent call last)
<ipython-input-25-94ed3b56fffe> in <module>()
----> 1 ngram_vocab[729]

IndexError: list index out of range

In [26]:
import numpy as np

In [30]:
range(4,4+1)


Out[30]:
[4]

In [ ]:
batch_size = 8
nvo_size = 729
batch = np.zeros(shape=(batch_size, nvo_size), dtype=np.float) # initialise a matrix of 64 * 27
# I.e. each batch in this case involves 64 different sets of character sequences.
for b in range(batch_size): # repeat for each of these 64 character sequences
    batch[
                b, 
                self._nvo.ngram2id(
                    ''.join(
                        self._text[position] 
                        for position in range(self._cursor[b], self._cursor[b]+self._nvo.size)
                    )
                )
    ] = 1.0 # for each row representing a sequence in the batch 
            
    self._cursor[b] = (self._cursor[b] + ngram_size) % self._text_size # % just enables cycling of data