{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "import string\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "random.seed(34)\n",
    "%load_ext autotime\n",
    "def randomStringDigits(stringLength=12):\n",
    "    \"\"\"Generate a random string of letters and digits \"\"\"\n",
    "    lettersAndDigits = string.ascii_uppercase + string.digits\n",
    "    return ''.join(random.choice(lettersAndDigits) for i in range(stringLength))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 90.8 ms\n"
     ]
    }
   ],
   "source": [
    "NUMSTR=10000\n",
    "tkrs=np.array([randomStringDigits() for  x in np.arange(1,NUMSTR)])\n",
    "brokentkrs=np.array([i[2:-1] for i in tkrs])\n",
    "tkrs;\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 507 µs\n"
     ]
    }
   ],
   "source": [
    "brokentkrs;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 58.5 ms\n"
     ]
    }
   ],
   "source": [
    "\n",
    "#now shuffle!\n",
    "random.shuffle(tkrs)\n",
    "random.shuffle(tkrs)\n",
    "random.shuffle(brokentkrs)\n",
    "random.shuffle(brokentkrs)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 7.91 ms\n"
     ]
    }
   ],
   "source": [
    "masks=dict(zip(tkrs,np.ones(tkrs.size,dtype=bool)))\n",
    "def simplematch(tkrtofind):\n",
    "    res=''\n",
    "    maskedtkrs=tkrs[list(masks.values())]\n",
    "    mask=np.char.find(maskedtkrs,tkrtofind)\n",
    "    loc=np.where(mask>=0)\n",
    "    \n",
    "    #print (len(masks),len(tkrs[masks]),loc[0])\n",
    "        \n",
    "    if loc[0].size>0:\n",
    "        res=maskedtkrs[loc[0][0]]\n",
    "        masks[res]=False\n",
    "    else:\n",
    "        res='nan'      \n",
    "    \n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time: 34.3 s\n"
     ]
    }
   ],
   "source": [
    "res={i:simplematch(i) for i in brokentkrs}\n",
    "res;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'DO71TDBQA': 'AXDO71TDBQAM',\n",
       " 'JDA55EFIE': '3MJDA55EFIEV',\n",
       " '6QMMGHNHJ': '4F6QMMGHNHJD',\n",
       " '9TWGE0QES': 'FR9TWGE0QESJ',\n",
       " '45AU9WLCH': 'KF45AU9WLCHF',\n",
       " 'CSYWNFXTY': '34CSYWNFXTY8',\n",
       " 'TWNKEAA82': '25TWNKEAA82P',\n",
       " 'UW3JOMUTJ': 'L2UW3JOMUTJ4',\n",
       " '5B3ANSSUZ': 'WU5B3ANSSUZX',\n",
       " 'TGUCHCYND': '0ATGUCHCYNDE',\n",
       " 'CXV9QVJ9Z': 'W8CXV9QVJ9ZY',\n",
       " 'OMET7YX51': 'J7OMET7YX511',\n",
       " '5H0AUF5O8': 'Y85H0AUF5O80',\n",
       " '4NA1X7RIQ': 'TO4NA1X7RIQ0',\n",
       " '7VWM39ZEV': 'MZ7VWM39ZEVG',\n",
       " 'RA86HZ3R3': 'EJRA86HZ3R3Q',\n",
       " 'E58UP20DN': '9KE58UP20DN5',\n",
       " 'DRIGFBUDU': 'JMDRIGFBUDU8',\n",
       " 'QGTVH08TY': 'X9QGTVH08TYQ',\n",
       " 'TB5HBIXX5': 'MNTB5HBIXX5Z',\n",
       " 'UB7RL30VX': '8AUB7RL30VXJ',\n",
       " 'YD22RW7IL': '0JYD22RW7IL3',\n",
       " 'ONTVH3717': 'DRONTVH3717G',\n",
       " 'NQ7LJ1X88': 'HINQ7LJ1X886',\n",
       " 'KQBDT60Y8': 'W9KQBDT60Y87',\n",
       " '36LUE20GT': 'Z236LUE20GT5',\n",
       " '99D1HYQ0J': 'GA99D1HYQ0JZ',\n",
       " '66CHBXYDA': '1U66CHBXYDA6',\n",
       " 'LJR0XO7V0': 'KWLJR0XO7V0U',\n",
       " 'EE259D0EG': '2BEE259D0EGK',\n",
       " 'KFY2QYCM4': '56KFY2QYCM42',\n",
       " 'IBSXMP0HC': 'OSIBSXMP0HCT',\n",
       " 'P3FFUFE05': 'M0P3FFUFE052',\n",
       " 'HAMR3Z96M': 'XSHAMR3Z96MC',\n",
       " 'I2WWAOZG7': 'D3I2WWAOZG7C',\n",
       " 'X9HLCJHAP': '7LX9HLCJHAP6',\n",
       " 'QS1N6LGIJ': 'AVQS1N6LGIJK',\n",
       " 'IDIEFIRTV': 'TXIDIEFIRTV5',\n",
       " '9HFVGP9S8': 'NW9HFVGP9S8T',\n",
       " 'BXZ4UJU17': 'TPBXZ4UJU17P',\n",
       " '0DA0OOTM3': 'AB0DA0OOTM3V',\n",
       " '1TU3V5YG5': 'DI1TU3V5YG5L',\n",
       " 'KQCDAZVF5': 'I9KQCDAZVF5K',\n",
       " 'ADRZ64V1A': '6GADRZ64V1AI',\n",
       " 'D0Z5UPPPO': '9FD0Z5UPPPOJ',\n",
       " '9B945PL1J': 'H19B945PL1JS',\n",
       " '5YMO22TFS': 'ZI5YMO22TFS9',\n",
       " 'CARTXHPPM': '0MCARTXHPPMG',\n",
       " '8VHPC64KM': 'DM8VHPC64KMR',\n",
       " 'PB00TLGNR': 'GQPB00TLGNRS',\n",
       " 'X6YV0CTST': 'MGX6YV0CTST4',\n",
       " '9PR47TAGG': 'FX9PR47TAGGP',\n",
       " 'WPBHE899U': '8LWPBHE899UA',\n",
       " 'MZPMCLYMC': 'TJMZPMCLYMCY',\n",
       " '1A2D2BKHO': '181A2D2BKHOG',\n",
       " 'N5RP7GSIM': '3WN5RP7GSIM3',\n",
       " '5PIAOWPNB': '7H5PIAOWPNB3',\n",
       " 'NQO5KRURM': 'VRNQO5KRURMZ',\n",
       " 'GKE8QCZEB': 'G1GKE8QCZEBO',\n",
       " 'X166UN51M': '65X166UN51ML',\n",
       " 'ZBCBFQTJA': '1KZBCBFQTJA7',\n",
       " '4MMEOSTLY': 'W44MMEOSTLY7',\n",
       " 'FA2B94LAY': '55FA2B94LAYZ',\n",
       " 'HO72ENGP7': 'ZEHO72ENGP79',\n",
       " 'HLTT2SPHG': '9THLTT2SPHG3',\n",
       " 'ES2KN7J5A': 'CQES2KN7J5A7',\n",
       " 'RWGWKUE3H': '8TRWGWKUE3HC',\n",
       " 'DELUHV2VP': 'A5DELUHV2VPW',\n",
       " 'SCTTTONHR': 'KLSCTTTONHRI',\n",
       " 'FH33UVR73': 'M0FH33UVR73A',\n",
       " 'XHVE98LH5': '6QXHVE98LH57',\n",
       " '8YM64AWEQ': 'HT8YM64AWEQ5',\n",
       " 'IIDS6JXSZ': 'SVIIDS6JXSZG',\n",
       " '91NGKTSD1': 'ZB91NGKTSD15',\n",
       " 'V89EIY5OM': 'W0V89EIY5OM3',\n",
       " 'KKK6O3LKR': 'Y1KKK6O3LKR3',\n",
       " 'KLQ03Y1ZT': 'S7KLQ03Y1ZT3',\n",
       " 'CWCZKK9Y7': 'G5CWCZKK9Y7Q',\n",
       " 'VE2OZJZF5': '1BVE2OZJZF59',\n",
       " 'W8XP182B5': 'M5W8XP182B53',\n",
       " '6GD1A8LHD': '696GD1A8LHDI',\n",
       " '8MO8Y1ES0': 'RN8MO8Y1ES0K',\n",
       " 'T1ZBGJHVM': 'BYT1ZBGJHVMG',\n",
       " 'M5HR5ZQIY': 'BLM5HR5ZQIYR',\n",
       " '4XLFJ05JG': 'F34XLFJ05JGS',\n",
       " 'YFP72SLK7': 'Z7YFP72SLK7N',\n",
       " 'ES0JIOPJ2': 'OZES0JIOPJ2K',\n",
       " 'KV3CFMYRM': 'EFKV3CFMYRMW',\n",
       " '9AEUN9UCH': 'QZ9AEUN9UCH8',\n",
       " 'LURZ8V5E1': 'E2LURZ8V5E13',\n",
       " 'WF4VPFQTR': 'YWWF4VPFQTRH',\n",
       " 'UCNZXFSRY': '5XUCNZXFSRY7',\n",
       " 'RC6RTNLKL': 'YXRC6RTNLKLG',\n",
       " 'XOE94B8C5': 'XNXOE94B8C58',\n",
       " '601CLQTOB': 'DP601CLQTOB6',\n",
       " 'VNDIXZ7JW': 'ZUVNDIXZ7JWG',\n",
       " 'MQES3LJA6': 'MKMQES3LJA6Q',\n",
       " 'GBF82ZK6I': 'X9GBF82ZK6IH',\n",
       " 'S3C1SYRM7': 'HPS3C1SYRM7P',\n",
       " 'DEXTKGLC0': 'R0DEXTKGLC0W',\n",
       " 'M0U7OH207': 'U8M0U7OH207A',\n",
       " '3ZG6HVKOM': 'A63ZG6HVKOM5',\n",
       " 'A22JVYIXB': '50A22JVYIXBT',\n",
       " 'ZG5MZ9ULG': 'J3ZG5MZ9ULG0',\n",
       " 'T53ARN9U6': 'PHT53ARN9U6P',\n",
       " 'M99IBS4BA': '48M99IBS4BAV',\n",
       " 'E3CCA3XPJ': 'IKE3CCA3XPJF',\n",
       " '2RQO0REPB': 'X52RQO0REPBV',\n",
       " 'BYJHZLAFC': '24BYJHZLAFC1',\n",
       " 'BTWDT1YIC': '3NBTWDT1YIC2',\n",
       " 'TTCQT8FAD': '69TTCQT8FADJ',\n",
       " 'W1I292YWM': '87W1I292YWMT',\n",
       " '3VN0549AR': 'HP3VN0549ARZ',\n",
       " 'I1ITMX68K': 'Y8I1ITMX68KZ',\n",
       " 'F6OHHSGMN': 'XBF6OHHSGMNX',\n",
       " 'DHKU2MCFV': 'HADHKU2MCFVG',\n",
       " 'ZQIQBQ4HB': 'LVZQIQBQ4HBP',\n",
       " '7UDGVRNQH': 'AB7UDGVRNQHF',\n",
       " '8ISWSJZRE': 'IW8ISWSJZREL',\n",
       " 'D443SKQV9': 'MFD443SKQV95',\n",
       " '4NPV5ILXW': 'BR4NPV5ILXWX',\n",
       " 'YUMPHU8KH': 'O2YUMPHU8KHW',\n",
       " 'CUU6WOLK9': 'QJCUU6WOLK94',\n",
       " 'TZQTGORKP': 'WOTZQTGORKP0',\n",
       " '1HURTWU07': '3Q1HURTWU07A',\n",
       " 'GE57S1K5Y': 'CDGE57S1K5Y8',\n",
       " '6R46YLDI9': 'D96R46YLDI9S',\n",
       " '4917064S4': 'UX4917064S4M',\n",
       " 'KK5LDDSZA': 'RMKK5LDDSZA7',\n",
       " 'NO5NV97AF': '42NO5NV97AFF',\n",
       " 'VGCV7JV7L': '87VGCV7JV7LO',\n",
       " 'R4T1LKGDY': 'IAR4T1LKGDYD',\n",
       " 'HAWV27DB7': 'DNHAWV27DB7V',\n",
       " 'QMJSQUHRW': 'JPQMJSQUHRW1',\n",
       " '3S41ORQEE': '7E3S41ORQEE0',\n",
       " '20S7FQUHA': 'D420S7FQUHAS',\n",
       " '4MUPRNPGL': 'L24MUPRNPGLJ',\n",
       " 'ILS5R11OM': 'UHILS5R11OM9',\n",
       " 'BOPM5E8UC': 'C0BOPM5E8UC1',\n",
       " 'KTVFADHQW': 'BVKTVFADHQWU',\n",
       " 'WG9XKJNG4': 'EKWG9XKJNG4C',\n",
       " 'KGYNL1828': 'DWKGYNL18285',\n",
       " '2MDOX3R4V': 'JW2MDOX3R4V6',\n",
       " 'KETIIHQRQ': 'EFKETIIHQRQK',\n",
       " '1QENAC6BH': 'UJ1QENAC6BHO',\n",
       " '8QYCT8M99': '2G8QYCT8M99D',\n",
       " 'PX92YOBIQ': 'EVPX92YOBIQO',\n",
       " '65GH7PAU8': '5665GH7PAU8H',\n",
       " 'VHLXCVKYJ': 'CCVHLXCVKYJL',\n",
       " 'OYV1JCEZ4': 'DROYV1JCEZ4R',\n",
       " 'MV9HUKM9W': 'E0MV9HUKM9WZ',\n",
       " '9ENELFA3J': 'R49ENELFA3J6',\n",
       " 'XGND1P96B': 'BBXGND1P96BA',\n",
       " 'C9VBH2SN1': 'L7C9VBH2SN13',\n",
       " 'ORVUKAQQ3': '5VORVUKAQQ3X',\n",
       " 'Y3RAQG0P7': '14Y3RAQG0P7G',\n",
       " 'N4RMT14KJ': 'LDN4RMT14KJ1',\n",
       " 'PM0IY5N3D': '4ZPM0IY5N3DD',\n",
       " 'VI5Z8OHVJ': '4MVI5Z8OHVJT',\n",
       " '2NG0MJU8R': 'Q22NG0MJU8RY',\n",
       " 'DW335PYUU': '2SDW335PYUU2',\n",
       " '0N60320LW': 'LP0N60320LWT',\n",
       " '08MI510SO': '7D08MI510SOG',\n",
       " '52ZIQZITA': 'QH52ZIQZITA0',\n",
       " '6BCET1G6L': 'FE6BCET1G6LJ',\n",
       " 'H8G5HA98Y': '3IH8G5HA98YW',\n",
       " 'SPF213LIK': '9RSPF213LIK8',\n",
       " '6XXFSL006': 'AX6XXFSL006E',\n",
       " 'DIKIO64IS': 'D1DIKIO64ISV',\n",
       " 'QZYUVYZQC': 'MCQZYUVYZQCR',\n",
       " 'VQV13OB2D': 'B8VQV13OB2D2',\n",
       " '1N6DI65EF': 'CN1N6DI65EFU',\n",
       " '5A1CFMFDW': 'VW5A1CFMFDWT',\n",
       " '6UDJNGDLV': 'U46UDJNGDLV4',\n",
       " '4CXZ7E03G': 'OF4CXZ7E03G1',\n",
       " 'DGXKVLWI6': 'YWDGXKVLWI63',\n",
       " '6EL1HRO37': 'K16EL1HRO37L',\n",
       " 'MZA4PZHN1': 'B4MZA4PZHN1X',\n",
       " 'H4J8AA9D9': 'VBH4J8AA9D9K',\n",
       " '94X7BM5YH': 'R394X7BM5YHD',\n",
       " 'D4W6LP8DS': 'TKD4W6LP8DSB',\n",
       " 'XLB6X775W': '9WXLB6X775WV',\n",
       " 'UJ3IXRHOQ': '1DUJ3IXRHOQH',\n",
       " 'F4D5ULQS2': '16F4D5ULQS2N',\n",
       " 'OK1OYP6UH': '8GOK1OYP6UHP',\n",
       " 'C4XAN8ZQX': 'WLC4XAN8ZQXC',\n",
       " 'Z1C4LXNUX': 'XZZ1C4LXNUXK',\n",
       " 'UR893BUIO': 'UUUR893BUIOM',\n",
       " '2MHFMCKXB': 'MS2MHFMCKXBG',\n",
       " 'WV9GSZ9Y9': '1HWV9GSZ9Y90',\n",
       " 'DJVCDACM4': '3CDJVCDACM4E',\n",
       " 'UD9WEX3MI': 'PLUD9WEX3MIP',\n",
       " 'AO9E1G23K': '4HAO9E1G23K9',\n",
       " '314RD6J53': 'J8314RD6J53P',\n",
       " 'ZWTCGE82T': 'XPZWTCGE82T3',\n",
       " 'AQWM6ZAXA': '43AQWM6ZAXAE',\n",
       " 'XYT8UANE5': 'CEXYT8UANE5W',\n",
       " 'HBX2NV1WU': 'GAHBX2NV1WUX',\n",
       " 'YARFVQ8NV': '2WYARFVQ8NVH',\n",
       " 'Q8XRD3O7U': 'D5Q8XRD3O7U7',\n",
       " 'T944EOPRH': 'B9T944EOPRHF',\n",
       " 'S9KI8ZAIS': 'MWS9KI8ZAISX',\n",
       " 'K9JVRFD7P': 'F1K9JVRFD7PC',\n",
       " 'TQLAT8HYQ': 'HKTQLAT8HYQC',\n",
       " '2WF3FK3WK': '0M2WF3FK3WKP',\n",
       " 'FMK7CUIQ6': 'FFFMK7CUIQ6O',\n",
       " 'W35ZP4CJT': 'FDW35ZP4CJT6',\n",
       " 'GZVXIVFA5': 'FCGZVXIVFA5A',\n",
       " 'G60QFWBI6': '01G60QFWBI6L',\n",
       " 'VSWK4HZ48': 'K6VSWK4HZ48F',\n",
       " 'JC17GDPYL': '6JJC17GDPYLT',\n",
       " 'GLM2KKVDO': 'RMGLM2KKVDOT',\n",
       " 'A1PKFD4SI': 'VVA1PKFD4SI6',\n",
       " '6M3STNR7D': 'ZS6M3STNR7DT',\n",
       " 'LD9SU4M2K': 'K5LD9SU4M2K5',\n",
       " '7OUQU2N9E': '5N7OUQU2N9EL',\n",
       " 'O7KSY41NX': '2VO7KSY41NX3',\n",
       " 'VAAQH72VE': 'AMVAAQH72VE1',\n",
       " '4TIJDRJXK': '4V4TIJDRJXK4',\n",
       " 'O2W8LBQST': '3XO2W8LBQST8',\n",
       " '2FZBFCPBC': 'O82FZBFCPBCW',\n",
       " 'CR8BIQRJI': 'PDCR8BIQRJIE',\n",
       " '9ATM3C2QF': 'Y49ATM3C2QFG',\n",
       " 'A9K6ODETN': '1NA9K6ODETNQ',\n",
       " 'WSF8ODG6K': 'JFWSF8ODG6KL',\n",
       " '97QHJYVGS': 'SH97QHJYVGS6',\n",
       " 'S11Q6D74C': '06S11Q6D74CF',\n",
       " '4I010H2FG': 'PS4I010H2FGF',\n",
       " 'LB8DJ50W7': 'LSLB8DJ50W7Y',\n",
       " 'BWJEI2ZWW': '2FBWJEI2ZWWW',\n",
       " 'J6Z8TUP17': '53J6Z8TUP17K',\n",
       " '6SKFIUQQR': 'FF6SKFIUQQRI',\n",
       " '21752X5I4': '3P21752X5I4H',\n",
       " 'EBJRHI9MX': 'BEEBJRHI9MXO',\n",
       " 'CGIM8212C': 'TKCGIM8212CA',\n",
       " 'ZTAT58MP9': 'PSZTAT58MP9X',\n",
       " '2C53MI58E': 'EQ2C53MI58EK',\n",
       " '2J6MVBDXF': 'WD2J6MVBDXF4',\n",
       " 'VUZB8LZWG': 'L6VUZB8LZWGC',\n",
       " '24NAR0P4U': '2T24NAR0P4UQ',\n",
       " 'QIURVPPEU': '2VQIURVPPEUN',\n",
       " '22MOPDBE5': 'CZ22MOPDBE5Q',\n",
       " 'QIR9UC0C2': '0XQIR9UC0C21',\n",
       " 'EBWFR1675': '6SEBWFR16758',\n",
       " 'VQY0DPD4Y': 'YEVQY0DPD4Y5',\n",
       " 'HIO7012J3': 'BIHIO7012J3V',\n",
       " '82LO8UAOF': 'SE82LO8UAOFG',\n",
       " 'M4F3A801F': 'P4M4F3A801FS',\n",
       " 'VEWNXX8LJ': 'QUVEWNXX8LJA',\n",
       " 'DR9BZILYK': 'K4DR9BZILYKE',\n",
       " 'WUNNTQEZ1': '71WUNNTQEZ12',\n",
       " 'ZDEFTB1IL': 'DBZDEFTB1ILD',\n",
       " 'W4THBWTKG': '1RW4THBWTKGQ',\n",
       " '5IFM62ER1': '1M5IFM62ER16',\n",
       " 'WUCK7DERX': '5GWUCK7DERX6',\n",
       " 'JSVFCY8HF': 'GAJSVFCY8HF0',\n",
       " 'QO47CZIXH': 'FNQO47CZIXHC',\n",
       " 'F9796AJTQ': '32F9796AJTQX',\n",
       " 'AYMKEUSED': '2HAYMKEUSEDH',\n",
       " '8MCTP6LWD': 'N28MCTP6LWD8',\n",
       " 'BFAS6L19T': '6OBFAS6L19T0',\n",
       " '52YR1ZQIH': 'LM52YR1ZQIHC',\n",
       " 'DB4KB8J2L': 'ZBDB4KB8J2LY',\n",
       " 'PWSKN1AY9': '25PWSKN1AY9B',\n",
       " 'TLYW6AO5H': '2STLYW6AO5HL',\n",
       " '8Y7Z0XZ62': 'UR8Y7Z0XZ62G',\n",
       " 'UEUJA1ZVQ': 'RXUEUJA1ZVQX',\n",
       " 'MKFMF3HPG': 'T7MKFMF3HPGR',\n",
       " 'F1ID3TSTM': '8TF1ID3TSTMR',\n",
       " '43V04ZM3O': '2L43V04ZM3OB',\n",
       " 'Q9Q42W5Y4': 'RDQ9Q42W5Y40',\n",
       " 'VLMQE8WPZ': 'VFVLMQE8WPZO',\n",
       " 'YB4GUPUS5': 'WXYB4GUPUS59',\n",
       " 'A63RRAJD8': 'JYA63RRAJD8G',\n",
       " '3E7EIAYAM': 'RH3E7EIAYAM1',\n",
       " 'Z4OTO9L6S': 'NOZ4OTO9L6SE',\n",
       " 'T13YH6FP1': 'A4T13YH6FP1H',\n",
       " '81B435UP4': 'Y381B435UP4Y',\n",
       " '0FPSHDFIP': 'ZC0FPSHDFIPJ',\n",
       " 'AVNJ3J8EL': 'FYAVNJ3J8EL0',\n",
       " 'MLZ4DL6C4': 'Z3MLZ4DL6C4K',\n",
       " 'U8RG5JYKX': 'ELU8RG5JYKXC',\n",
       " 'HXS6LRFRT': 'ZAHXS6LRFRTQ',\n",
       " '5ZLIRONWF': '8G5ZLIRONWFS',\n",
       " '9VOO2RY6B': 'TT9VOO2RY6BS',\n",
       " '5MU5HIVFA': '2U5MU5HIVFAF',\n",
       " 'PNTYGS7BB': 'K7PNTYGS7BB6',\n",
       " 'TSY11I09H': 'W5TSY11I09HX',\n",
       " 'TLQ0M2ZJ7': 'MOTLQ0M2ZJ7I',\n",
       " 'K7EHZR3G0': '9HK7EHZR3G0A',\n",
       " 'DWBUGK7S4': 'XYDWBUGK7S43',\n",
       " '3YV8BFMQD': 'O03YV8BFMQDC',\n",
       " 'ZXHPB7PK5': 'MOZXHPB7PK52',\n",
       " 'G09228B46': 'GGG09228B46H',\n",
       " '3T7X2XUJE': 'P03T7X2XUJE0',\n",
       " 'MQRVEO5XK': 'O1MQRVEO5XK6',\n",
       " 'W729BG75C': 'PGW729BG75CJ',\n",
       " 'YZ42LKOC3': 'FXYZ42LKOC3V',\n",
       " 'MX7W2VVFL': 'BGMX7W2VVFLM',\n",
       " '9TE099FQF': 'S99TE099FQF6',\n",
       " 'RK5TXUFDB': 'R4RK5TXUFDBY',\n",
       " 'FWDV43CLD': 'Q2FWDV43CLDJ',\n",
       " '6J06KB15V': 'NM6J06KB15VZ',\n",
       " 'P8GK81MZW': 'JIP8GK81MZW2',\n",
       " 'OCW1CCQYS': '1VOCW1CCQYSV',\n",
       " '4VHE6PI7F': '3H4VHE6PI7FR',\n",
       " 'B15P0OYCN': 'NMB15P0OYCN8',\n",
       " 'HA9C7RUAE': 'Y8HA9C7RUAE1',\n",
       " 'QYFKO5546': 'EZQYFKO5546D',\n",
       " '6F39T0NNB': '8A6F39T0NNBF',\n",
       " 'D3N2HOB8Z': 'BHD3N2HOB8Z0',\n",
       " 'HP1X4MNKD': '5OHP1X4MNKDK',\n",
       " 'L0DD0ULT7': 'D7L0DD0ULT75',\n",
       " 'MCV4GR0T0': '7KMCV4GR0T0I',\n",
       " 'GVV7VU5LH': 'XTGVV7VU5LH0',\n",
       " '7YQB5N9L2': 'G77YQB5N9L20',\n",
       " 'OYP9WS1O6': 'WHOYP9WS1O63',\n",
       " '321QRIN7X': 'EQ321QRIN7X4',\n",
       " '0SWQ37SIX': 'YL0SWQ37SIX0',\n",
       " 'DQLJG0QP8': 'PZDQLJG0QP82',\n",
       " 'VREINDO2Z': 'I7VREINDO2ZC',\n",
       " '0LLTRFT38': 'H10LLTRFT38Q',\n",
       " 'ETUMPHYK3': 'RUETUMPHYK3F',\n",
       " '3G6U150HG': 'L93G6U150HGB',\n",
       " '7QN7HCHNI': 'VH7QN7HCHNIV',\n",
       " '64CVRL0QR': 'G164CVRL0QRI',\n",
       " 'NEO6G19L7': 'I8NEO6G19L7C',\n",
       " '4MDIHCUQU': 'BJ4MDIHCUQUF',\n",
       " '9VS7VBHI4': 'RW9VS7VBHI4G',\n",
       " '1YH0F2QOD': 'O11YH0F2QODF',\n",
       " 'QHISI6VK0': 'U5QHISI6VK0L',\n",
       " '4QVCWPICV': 'JJ4QVCWPICV6',\n",
       " 'QPI42MT9F': 'PLQPI42MT9FF',\n",
       " 'HCCYG0AC"
      ]
     },
     "execution_count": 213,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<b>limit_output extension: Maximum message size of 10000 exceeded with 30005 characters</b>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
