diff --git a/2017/07/input.txt b/2017/07/input.txt new file mode 100644 index 0000000..890957f --- /dev/null +++ b/2017/07/input.txt @@ -0,0 +1,1416 @@ +rmhcw (26) +dmmriu (61) +zjyaaoc (89) -> khekb, lywwhf +kjgaib (385) +nvvdii (28) +zsgegr (15) +azrafw (72) +amzxtvd (92) +zlkpdaw (77) +pgfqtb (552) -> uynvl, ogcra, detyx +uoztb (75) +dktlvzc (97) -> jrryajw, uwctdam +jtsahle (37) +tuphfrq (87) +pimll (344) -> ajhnj, mtmpaji +otnkggc (84) +njlmm (6) +cktiwle (20) +cdthf (17) +rmmgmm (17) +vthnptc (132) -> ivaasv, bpehcx +dujrdhp (51) +dtubefc (50) +fdkyuhv (74) -> gxpqjp, tvnoctm +qplfqti (1201) -> moyxzbt, icdth, mynrc, sbrhj, ocynqs +rtckm (24) +vszkz (1030) -> sitfw, mlhli, atyrf, nrbvw +fxyfmtw (913) -> vptoff, etzcek, erieyzj +pjqxvcx (24) +foyrjn (903) -> vhvdkt, pvmhjh, pimll +brofu (12) +wrucr (110) -> kcxol, vflryv, dgvxrd +lmcvdg (96) +tykfhh (18) +lgmsbu (32) +qwqbgko (1661) -> ltdmtot, czgwxvf, dktlvzc +ocfqtr (54) +kvfpfwn (84) +lpuzdj (51) +aotgdc (67) +dciwsw (15) +lwyej (84) +bwxgva (28) +oraaeb (9) +zdgdoe (66) +boolrdh (96) +ryixkn (40) -> kvfpfwn, jrzeg +rgyulf (99) +oztfyt (77) -> gijzmpj, moukxw +ujhhibr (82) +zwzki (57) +pqmyjtl (166) -> vipoi, iylzwio +szifo (77) -> pkmgtcu, rgyulf +bcawzmn (2980) -> kdnex, dualr, zacca, kodtvsj, lkvju, twumak, vlhsdy +agifmzc (5) +fyazgqg (76) +riqok (295) +chhjhsu (231) -> ejootzk, gpzdwzc +hmlkdv (157) +esvdf (128) -> wmrxba, dfhbypd, egcjh +skusk (73) +mcbkdjm (48) -> uojvtmd, kthqsm, klkqzgk, yauwsp, zjgifte +mptfgnr (67) +toejq (265) +scgycex (64) +ortnis (89) +kmmejxq (19) +impwda (30) +cijljt (85) +fhbphvw (38) +kwqnczk (73) +xyfqbw (136) +criyk (23) +gzywgu (69) +ghgsrqm (122) -> jajds, mkhupy +gqdyvi (40) -> nepucl, dgczfau, kxudlu, bfuogmf, udoins, qplfqti +mxnuvaf (86) +plsxwh (79) +hrckiut (93) +uneul (84) +qjgvzt (44) +lfhkna (30) +xchhko (59) +xryvbkx (9) -> gsgsoo, uixpy, tsjropj, wunvxyy, fxmegac, xabac, twfzsig +oeecpoh (136) -> rmnxqwr, iqpcyq, xtnbcdl +ggtdtk (51) -> dnflw, cwagf, cyflr +jubznb (74) +yubyr (61) +xnpbag (122) -> pgpszp, oykdl, nuytwqt +wmmgpoi (42) +elulm (17) +dvgaf (77) +pdftmlf (90) +cbtbxyj (67) +tsttu (50) +biupfx (63) +wwodj (68) +ttsik (98) -> lodegh, udjcgxd, oluejv +dmfzrwz (78) +cohmgk (38) +ujpxjvo (23) +voqoq (248) -> gxlnyfk, bslrn, yigwdrq +lxcuf (76) -> bkhouo, cijljt, hdyfay +jzytjy (14) -> wsgicvu, xlcvwa, dfrdsx +jktzsu (1800) -> rlmvaz, rbqziy +budlmc (77) +lvzbscf (24) +vaytig (81) +xifnep (44) +mzwuqf (23) +buurids (67) +yjqyzdx (32) +xwqwjpe (50) +mgitd (18) +ocoebv (130) -> xbrnkt, pyamx +txejs (229) +hnafo (312) -> qajub, hijor, cpgqlov, glvea, ioyqxi, yqobec +olywf (56) +hfysw (27) +dxuzg (95) +qnfptsg (12) +teudtu (60) +miheo (87) -> tgdxj, lgbdoew +mweofft (112) -> xjwsq, nfuhle, ejchirl +ffwqnu (19) +klkqzgk (230) -> rzvmuhc, gfdqw +jqfnlo (62) +yddig (106) -> zwzki, onasr, acpvgye +gijzmpj (27) +glvpo (76) +eiqkt (99) +ivaasv (89) +mkbkf (50) +coozmv (56) +sxtosdg (80) +pbfyx (72) +xdvfq (221) -> wyepbsc, shvdgjj +ykvbw (1128) -> klplfg, tgtuj, qmuwov +tusmyhc (116) -> mxfhzxz, agajilj +cumah (1069) -> pqmyjtl, wczux, rfjilj +tdtgvd (89) -> zykce, cznez, cxdfcfo +lubxj (58) +atyrf (171) -> nvvdii, qvsyjp +dixfg (51) +bsaqdlw (115) -> bwxgva, ijpkw, qhzijcy, isixh +vxmcz (114) -> ltpdyh, tlgrujs +eezhvk (65) -> kakya, ublhtvx, uetik, lxvsklc +zoswcn (81) +uyrmu (63) +ngnyte (46) +jgihy (79) +flutk (50) +gcepy (49) +zobxdhc (51) +ttigpkh (66) +pjockdt (48) -> gjadc, wctijwc, mejujn +esfkj (80) +exiatbf (9) +thxdl (85) +vmyeuh (39) -> ygtusut, vxywld, mzwuqf, esyoils +axftz (227) -> olufpv, hpbcytx +fodble (30) +geqhfh (98) -> ffwqnu, lwlhv +twryo (17) +almlu (65) -> vurym, ryhdf, ymmix +fbqnyl (40) -> mukgev, aytmotj, vxmcz, zegmhba, cjoktd +hzdjy (61) +smatb (212) +ajzejub (118) -> fkfhz, ccjay +rednz (44) +nhqcyo (59) +xjqjmx (3053) -> okurj, rdzusni, zmtmgdb +cgxxf (10) +cznez (67) +eugdc (117) -> wqwwip, byffz, virxd, scgycex +ambyx (20) +sqlwsz (78) +esgkmgn (100) -> thxdl, fhlom +qyree (60) +nuhuny (91) +djoubm (15) -> lubxj, lhaxjf +yrgajm (24) +vrfrgqq (95) +sullc (84) -> urmwxm, dcqtq +yiwrl (13) +qktqn (241) -> evprik, eegxx +uqxdea (99) -> ndqve, cvgwkop +raxhxb (144) -> dpqqukb, uvyqu, bxtyq +jepwvl (47) +uqtqvs (99) +ieekq (77) +ffulcj (73) +wygaoit (119) -> uijhb, opcrls +intsv (84) +ymmix (43) +oemmjed (56) +wnpzam (216) -> ldeelvr, dfaui +mwjtujw (16) +tvxvkfa (6) -> bhwoeq, jqfnlo, frejy, ylzefq +utdyk (163) -> exjlwux, agkvm +zhcka (89) +qylhq (196) -> qqpefh, fxxlahy, yxqaoje +acckfcm (171) -> thxkub, jmogygm +rgjrr (14) +prjpe (11) +cxdfcfo (67) +gpgeg (58) -> hxwcaqc, ieiyqb, etnfk +jzsvhf (51) +vhdea (82) +oeyvbro (84) +jwyixhi (15) +jpposiw (665) -> bjgyr, djoubm, oztfyt, tsfmg, vmyeuh +udcru (24) +mvihmy (241) -> jpxcpds, qjpmeb, amwgqjw +kutwy (51) +thizds (41) +aavcuhq (22) +izyzvs (139) -> wmmgpoi, bmucb +lksjvrl (84) +qztwco (53) +dcmwnt (222) -> zdjtgl, udcru +kvrvt (10) +frejy (62) +bpehcx (89) +uwctdam (48) +afhbfu (87) -> mlbwwv, uujpswh +hqhnhs (85) +nlonk (77) +wufwm (253) +bdowv (54) +aytmotj (92) -> ocleuky, mktrq, vheuyos, apvdjw +vxfsl (89) +gjfjuk (65) +dgoxkjd (166) -> zgmryzq, gusfsh +atvqfv (84) +lsfboo (75) +daxpn (45) +irqwcab (8461) -> hxsausc, qtmdrsq, xfqfzsh +uixpy (92) -> cpgiuqo, biupfx, rlqjnc +qhbrq (166) -> oemmjed, ifixi +ewgqv (211) -> cwydepp, bdowv +tckqlsw (54) +bxtyq (35) +jtnvh (43) +aywmn (97) -> oqfkzw, epgmufe +gyvcry (80) +upkdq (16) +gjadc (67) +fxmegac (177) -> nqvpxt, qwgal +tklmb (40) +saskhnf (44) +pkdky (51) -> iezqyyh, rtefbvp, pquivn +yqobec (47) -> axvuwo, cunshl, bfwwmam, riqok, wohqjaq, ufthnyr +twmxk (25) +jmjybfb (125) -> wbjbp, phaab +mukks (5) +xrdny (45) +toqcntj (137) -> yckzzdv, qbmsizh +vpcnw (36) +jnsfz (260) -> obfhgbl, igwsote, krfbes +ikqwjn (4725) -> pgfqtb, nzhby, azdkxw, nynvxxt +lgnltgy (88) +vnseppy (89) +vldkam (203) -> ejgmgu, uyrmu +flayoln (27) +rmdxq (90) +zfwxd (318) +wnndu (45) +detyx (76) -> uujwdtb, cvdatwa +ilgssfa (164) +jcvlaqi (326) -> fyrumv, zacqgsf +vcdoz (32) +msntfpz (15) +hwlwfs (6471) -> ueszsu, mroag, trvnbpq +vxdpzw (46) +laehzou (84) +aafaeyd (34) +yigwdrq (9) +yuutd (47) +gbeooc (133) -> budhvyf, kpnwcay +pquivn (45) +twfsmo (39) +fdjrm (39) +mvjzwg (233) -> cktiwle, duwsfyh +fyjqt (212) -> kmihua, qromdd +vhechuz (14) +zmtmgdb (1292) -> taadcy, fyjqt, akzavdu +huongnb (223) -> hwyjtzo, olryvzf +jdwezf (12) +zqfvypo (1810) -> juxyuv, ednozov +fahfz (1009) -> psgqug, lxcuf, mvihmy +uetik (47) +quvar (40) +aqlnsb (17) -> dhkdkp, rhmgk +wkheu (88) +jeysfy (74) +bzoeb (75) +pvmhjh (266) -> wuwksnc, hwgrnki +rhvrmfv (57) +xknwy (63) +tjepyd (167) -> hpoyfr, zgyuoh, cpzhmuv +oxngag (39) +pvoch (54) +hqpikjx (241) -> gcvsbqg, gxmyaep, zyvvmko +wyfod (269) -> znlwikg, nvnqv +emdcjcc (71) +zhunqhj (78) +ioyqxi (829) -> xumalc, jyuww, rytowol, uodkl +plmgm (124) -> civtm, twfsmo +pqmiyd (52) +wquesh (77) +jwani (92) +bslrn (9) +fyrumv (38) +zzjjmdw (59) +zacqgsf (38) +uduyfo (1710) -> amhaz, cumah, zqfvypo, dribos +vhvdkt (12) -> utwhpg, gsivsr, hpxkzm, dtfsxdh +wchboy (227) -> pqkudqa, blofhut +oacpzvm (37) +rdzusni (7) -> ewgqv, bfmemro, mweofft, mmbhu, qylhq, jeqojht, gpgeg +uudmxem (38) +emcmkkw (45) +kdnex (137) -> zmmov, rdktr, tdtgvd +uksfrmb (85) -> emcmkkw, ijlmsfb, pdrnuox, wnndu +umpivl (159) -> mgitd, iqanf +mikmp (50) +klukw (71) -> pggnlt, skusk, xqewue +jvamqz (87) -> mblszml, scxgu +zgmryzq (21) +wymhyko (17) +nifolyc (56) +zeiubr (138) -> ncyhsb, srubp +uzvsyt (6253) -> fsetxvb, mlufac, crpom, xarbaxi +smqdbd (280) -> kfuvm, xcjfiq +tttent (91) +nomlds (26) -> intsv, laehzou +sfegieu (92) +bfnnpkl (68) +wvfty (23) +oykdl (79) +xmqfua (18) +uvyqu (35) +cvhuwne (273) +rtmloqi (17) +xoexmt (23) +olegqeb (27) +dylatux (1508) -> zbkxzh, rpuefig +qtmdrsq (23) -> atvqfv, rjojhya, xzvbd +lhaxjf (58) +lfyyq (1044) -> oeecpoh, gmfsqw, fshbxj +tqlnvvp (59) +jhiejzb (74) +pkmgtcu (99) +iygaq (166) -> msntfpz, falzunq, jwyixhi, xyfhe +mtmjdk (87) +rdktr (256) -> xaxmer, srgev +cwlzph (98) -> lwqrj, somurr +hdvyqml (64) +oluejv (87) +qtuxuwe (26) +ltdmtot (143) -> xenad, lxmob +hwgrnki (49) +rbxgy (77) +nmonk (27) +kodtvsj (137) -> zeiubr, klukw, ddayyiv +wbjbp (75) +gsilyv (26) +cwadvj (95) +qhzijcy (28) +tqslgy (176) -> tnluhpd, irbpync +zjgifte (194) -> sefsszz, agrkalx +nazpcr (1111) -> feoqwhl, mwvluyo, fkwkr, cqusdqo, iszhf +sxzfd (161) -> offde, bikwar +nfmsd (134) -> tqlnvvp, tghuhpn +yauwsp (344) -> twryo, rmmgmm +eywyawe (11) +bikwar (43) +cnyrs (74) +zvynzb (51) +fxxlahy (41) +oqfkzw (90) +giuua (124) -> vdongnn, vgkkp +lctnj (54) +rlmvaz (69) +deqakr (225) -> ryxia, uycpqa +gxhnsq (71) +jmskfql (18) +vnlet (54) +lwubj (100) -> ttsxvot, oacpzvm +wpanqd (35) +jmogygm (39) +pmsdrrh (46) +fgrhkdd (28) +rlqjnc (63) +nxszwh (48) +qyldt (154) -> jdwezf, lfqglc +edtzpv (28) -> hocfnxj, ugdcq, rluqka +fhptqw (31) +okurj (1350) -> reeaojr, vlsons, qyldt, ocoebv, oqwgc +utcwj (249) +xbekvhl (16) +ecvpo (238) -> hexev, yaxzkrb +jwymbhh (5) +abmcv (54) +smcmduw (19) +bhond (63) +wmxih (50) +exqni (56) +fhdcvd (54) +gqjvwpx (10) +oawmfyx (77) +moukxw (27) +amwgqjw (30) +xutehnq (361) -> wnpzam, dsstz, tvxvkfa +pyamx (24) +dvehwh (11) +kgprdd (96) -> qtbws, iafal, yjqyzdx +sgwhkc (231) -> ckzpuzs, xbkccy +plawaw (14) +hzzbmus (48) +wlubh (125) -> sdpmpe, vcdoz +fkwkr (11) -> oxudyzv, xcrfey, tckqlsw +fjkhu (273) -> rvvuep, mvgcb +tsjropj (203) -> gzfuad, wrinrd +pggnlt (73) +lswbgy (117) -> dzvqmjz, bfnnpkl +hjvegbe (227) -> uqqjmps, xifnep, rednz +uynvl (30) -> bxiiba, rhvrmfv, hwzfzf, avnxvad +hnsyjq (49) -> uqtqvs, ecaqtyw +uzjxnwf (95) +ampem (74) +utwhpg (88) +lcbmlo (1650) -> kvrvt, gqjvwpx +fzycgs (38) +tnpjqk (44) +ajhnj (10) +hvaybmr (80) +xfhxb (34) +kcnabhn (259) -> soocm, cefpt +bvcygkz (88) +ejgmgu (63) +ajkaxbk (50) -> zoswcn, heilv +djwoy (213) -> conuwmt, iijuiln +cwsycss (51) +bawsdp (67) +krfbes (6) +budhvyf (98) +hpyfzew (29) +hexamha (30) +wqwwip (64) +qnzej (51) +ipauj (47) -> wkheu, bvcygkz +ekdzx (91) +ybbplm (6) +uizst (8) +nuynvy (57) +ickzym (14) +agkvm (43) +jrryajw (48) +qxrydcs (119) -> lvcpzy, wmzmuk, xqjqedz, uhrkq +rtqef (94) +yxqaoje (41) +dokkjf (132) -> efhdibc, afajf +evprik (17) +caufhb (82) +fhlom (85) +secmp (99) +aodxwem (74) +dhkdkp (92) +hdyfay (85) +ikcofec (11) +cyflr (89) +cyahch (941) -> rwiet, vulgw, qxrydcs, gique, ynirob +txdej (66) +yaxzkrb (7) +rtefbvp (45) +wljtjp (6) +sdxbol (2587) -> qwsjrs, dnqva, ddssmn +yckzzdv (37) +ncyhsb (76) +sxoxuhy (275) +whiaid (74) +hwzfzf (57) +olauul (75) +heilv (81) +deujsoj (202) -> dciwsw, hvjusf, oyiem +wyepbsc (40) +wksjc (19) +ejchirl (69) +tlgrujs (71) +ljpndb (195) -> nmonk, flayoln +vatjopi (17) +nyhlmwv (38) -> cjjge, gyvcry, hvaybmr, sxtosdg +ndqve (29) +zyvvmko (12) +dxfln (52) -> pihhj, xelex, csypcco +agajilj (87) +iqanf (18) +qjwjgap (305) -> bhond, xknwy +yqhvof (46) -> hfysw, mwsdpe, xugclel, drrlizg +pzzerxc (96) -> cqhwrn, lxbsb +ttsxvot (37) +jahdhw (64) +zdjtgl (24) +fmrbyn (230) -> bpqusy, jkcpz +btoafg (276) -> almjyt, ajzejub, ydlek, yopixg, rmtjyq, lwubj +cpgqlov (1061) -> xlqya, dtvxbn, nmwst, jfpmnr +ypatkqb (40) -> qqyqj, mxnuvaf +hijor (179) -> jzwcj, mjsib, mvjzwg, wcfib, tdfupn, dkxszcn +shvdgjj (40) +cjdmv (75) -> vzqaftq, fyazgqg +gqdbu (77) +gcjjvj (359) +gzgqh (10) +xelex (84) -> ekdzx, nuhuny, blscadu +xgudb (26966) -> hnafo, fouvfkn, pjfty, qkvogv, hwlwfs, lazhif +mtdnxdv (51) +hxnxfk (9973) -> xwdxtws, htwlkzk, voafbv +ryxia (38) +hlidsi (91) +gftoj (79) +yupwby (12) +zcyzaxo (28) -> dkshm, achnat, aperzqo +tsaqdup (19) +yegoug (154) +mlhli (19) -> nnjokq, iqgap, uclrhqy, zcuix +fprvu (77) -> dtubefc, tsttu +etnfk (87) +klplfg (131) -> plsxwh, gftoj +vtuzdmb (106) -> quvar, tklmb +mblszml (71) +tbltuom (96) +jfpmnr (165) -> ybbplm, njlmm, wljtjp, mekaep +skxmk (14) +xtnbcdl (54) +iqgap (52) +bajivws (84) -> rmhcw, uautcpo +avnxvad (57) +npnkt (60) +bqkjt (184) -> yrgajm, lvzbscf +gndfat (9) -> sldqhxe, bzdbxi, rmczumv, jeysfy +bfuogmf (1244) -> otivo, ytjnkx, uyklfxt, cpdtit +mxfhzxz (87) +zlcappl (201) -> xsefm, xbekvhl, upkdq +olxlgo (87) +duron (41) +pssbgm (52) -> emybof, hqhnhs +kthqsm (186) -> tbltuom, tjcnb +jknws (47) -> xemhgy, tazjcwi +sairne (45) +bfznf (2048) -> jsnlpme, wygaoit, elpequ, fprvu +pccpzvp (54) +oieobzw (234) -> frlpmld, tmyne, agifmzc +iylzwio (56) +zykce (67) +ejyyd (99) +rphyyst (4749) -> btoafg, fbqnyl, ntdeo, jpposiw +feoqwhl (85) -> wqjbjg, qjgvzt +rhmgk (92) +fjxjp (76) +hdhjbvn (84) +kjvnox (14) -> cnyrs, whiaid, nmcrmt, jubznb +uhbty (67) -> apangy, sktjkgs +rgiro (266) -> htlvlk, cklybnh +jzwcj (137) -> wwodj, yarqa +vjvbn (79) +allxyqf (40) +rjojhya (84) +pqalwfs (234) -> wsfdatj, gzywgu +zulymxl (66) +kgnxc (142) -> frayh, vaytig, xnvqjpw +vzqaftq (76) +wkatvkd (99) -> fmdfzpk, ndextdo +ywtmxkk (43) +nuautun (78) +mkhupy (81) +pyjlxpa (22) +hyiye (16) +bhwoeq (62) +hlddv (150) -> zlqtv, ickzym, plawaw +qednvhh (96) -> tttent, znaap +ecfls (59) +xakcd (94) +eddwubo (53) +zlkhsa (129) -> djwhzz, jnsfz, qhbrq, wfysif, qednvhh +acfxsgz (97) +tjhtlqt (81) +jkcpz (64) +xabac (127) -> bwpyz, wquesh +isixh (28) +vipoi (56) +ckzpuzs (23) +wjlprje (71) +kmgdk (63) +bpqusy (64) +ubcenyy (93) +mdhzx (735) -> sullc, ypymf, crfaeqg, nfmsd, ecvpo +omicyg (9) +wjwnd (146) -> ujpxjvo, xoexmt +kpnwcay (98) +aoxfg (83) +qldtb (61) -> hihdfp, lsfboo +ezyzl (61) +eegxx (17) +lgbdoew (51) +rbqziy (69) +dgczfau (1196) -> kpzfnz, deowe, dgoxkjd, rsisz, ryixkn +xugclel (27) +wctijwc (67) +sphft (53) +nrbvw (131) -> hzzbmus, yeqdida +fojja (97) -> jzsvhf, wuypkq, dujrdhp +mynrc (69) -> rnvhups, vxdpzw, pmsdrrh +oikboi (66) +dwddkt (189) +bbmrv (101) -> rmhroyf, oomcfz +zbkxzh (81) +rnvhups (46) +pjfty (3310) -> bqygu, xryvbkx, nazpcr, cjntq +isrdlt (51) +rgjigx (28) +pkmojw (77) +vurym (43) +civtm (39) +iqpcyq (54) +cefpt (7) +scglak (20) -> lrrtkfx, qztwco, sphft, qolhl +qkhciro (325) -> tzvshk, ywzaw +qyjllh (20) +pdsuhsj (90) +xyfhe (15) +esquqjv (330) -> jcvlaqi, zfljxqi, fgsiued, wyaatnb +czfbso (28) +ydlek (24) -> bzoeb, gckpcy +wzdcg (61) +uwbonvb (31) +udjcgxd (87) +bdrcuw (39) -> jahdhw, hdvyqml, idmaspp +vvqnfr (148) +mcarhq (62) -> ygkjkzl, pvswgen +cqdcsas (40) +egcjh (47) +lzeeb (517) -> fckqt, plmgm, qljngh +yhfcugm (81) +tmyne (5) +mwsdpe (27) +mlbwwv (35) +sldqhxe (74) +accmwfa (81) -> ezxcaqx, jmskfql +vjlxr (46) -> dxhqs, exqni, coozmv, ooevokb +cpgiuqo (63) +hkzfl (23) +zmmov (290) +cwydepp (54) +xujppza (41) +gzfuad (39) +htwlkzk (846) -> uzrqz, xwagm, urbknyn +xbkccy (23) +crpom (713) -> uqhati, zlkpdaw, owbglst +esyoils (23) +bhfbkik (48) +qmuwov (289) +tclwlv (12) +wunvxyy (161) -> kqkdd, jhihznq +fmpkn (59) +pvswgen (37) +bvcrfun (78) +nhfqb (61) -> mwxuez, kgnxc, yegxpjz, ddfvxuh, wnplhq, kjgaib, bzlgvwt +lwgeanp (29) -> teudtu, qyree, cvfyti, npnkt +gusfsh (21) +iqlxjrp (79) +bkckl (215) -> daxpn, xrdny +gfdqw (74) +etrstos (24) -> mtmjdk, tuphfrq, olxlgo, yhvvk +pqdnn (87) +hexev (7) +tdfupn (141) -> ttigpkh, zdgdoe +emybof (85) +zfljxqi (370) -> jypod, hyiye +mtpmeyy (1731) -> vgqdk, kvlbx, zulymxl, txdej +lsecoh (74) +tgtuj (53) -> ecfls, zzjjmdw, lmpfqe, xchhko +pihhj (205) -> tsywh, fzycgs, cohmgk, sqdnri +ijlmsfb (45) +dnflw (89) +hocfnxj (94) +dgyrl (154) +evayy (36) +cwzzlp (133) -> rzjbs, qfaiy +bzdbxi (74) +wvkrjz (1399) -> dmcvsjm, aqlnsb, fynfku +gxpqjp (45) +jacxtkj (165) -> flqvd, lgmsbu +bfwwmam (51) -> izqkafc, bunddd, wzicni, hzdjy +wgfxt (195) -> gzpbfr, nhfhwsb +chriadz (13) +ksxbwm (11) +ylzefq (62) +gbgzoy (81) +znlwikg (81) +faucj (41) +kpzfnz (48) -> firzu, esfkj +ezxcaqx (18) +fcaaq (75) -> mptfgnr, nanka, dazaikq, lkyrbu +erhgm (211) -> tykfhh, xmqfua +ackdjv (68) -> ftiupez, jgihy +qkvogv (14) -> yrhrrr, lvxvpth, iyhelv, zwhvins, qwqbgko +qpiwrz (81) -> knczsj, fjkhu, btfwq, hiibilo, eugdc, ieetr +bvrrf (77) +xkzrpp (207) -> wksjc, lwedn +nputbbu (93) -> gjfjuk, exwnwk +yoyfiwh (66) +jgeknun (97) +nmpozu (30) +apoom (183) -> vhlfxfp, lgnltgy +vxywld (23) +kxudlu (1291) -> jcpfdu, dwddkt, qxvtbfs, wlubh, miheo +yevvy (34) +iqaret (13) +msnvc (57) +lrrtkfx (53) +firzu (80) +dualr (20) -> qdsbwl, vldkam, gbeooc +qjpmeb (30) +rsisz (46) -> vtlju, uwflq, pccpzvp +ykqcfv (14) +blscadu (91) +gglbk (75) -> jndkhd, aodxwem +ctofl (11) +rnnqgvs (254) -> wzgnpbd, tclwlv, yupwby +rdgbqio (94) +efhdibc (40) +lvxvpth (1490) -> snlalj, fojja, nitloc +xlkgp (24) +fchnaw (205) -> fodble, noiubo +fabvi (74) +abmxib (21) +wsfdatj (69) +jiaiwto (936) -> ezftzv, uwcumu, dylatux, fhezp, lcbmlo +bhjuuh (16) +bwhjf (79) +ublhtvx (47) +lfopzn (67) +ovtzpu (24) +qtbws (32) +kakya (47) +kcxol (83) +xsmuszr (64) +abeyout (324) -> vatjopi, krrpjjl +jndkhd (74) +pguona (99) +wmzmuk (61) +znntc (63) -> prcff, olegqeb +hrrnlw (89) +vhlfxfp (88) +uqmwqye (180) -> hrrnlw, gwlrhs +ufbyegt (11) +etzcek (97) -> nuynvy, msnvc +ztkiwjh (46) -> qwike, sairne +hpoyfr (41) +harlf (526) -> ilgssfa, fdkyuhv, npoep +jypod (16) +juxyuv (42) +itcgi (11) +uwldrgf (64) -> ahbhxn, wchboy, acckfcm, ijpaqb, eepvqlh, pjockdt, raxhxb +vxbubjs (21) +hfzhso (8) +grglx (143) -> gsilyv, rrdpahj +pgpszp (79) +kekbi (71) -> gnoisq, bfmwqqf +agrkalx (92) +jcpfdu (87) -> jzyjby, spfqkfm +fbyfuuo (138) -> eefthpt, giyfh +qqpefh (41) +wznaj (41) -> fmhuoa, rdgbqio +lwlhv (19) +wffua (79) +xsefm (16) +khekb (78) +wnplhq (77) -> nlonk, dvgaf, rbxgy, bvrrf +czhrelb (71) +pdrnuox (45) +phaab (75) +frayh (81) +qajub (1139) -> ctulmjv, rvrln, zlizsa +tqhbqhb (44) +ewrnfma (192) +gwlrhs (89) +vlsons (132) -> wrvyeig, wvfty +hxwcaqc (87) +fcavj (92) +vptoff (195) -> hfzhso, uizst +ndextdo (89) +krrpjjl (17) +qavslj (23) +qwsjrs (1423) -> vjlxr, esgkmgn, dcmwnt +yhksuh (48) +awpysm (77) -> szifo, voqoq, qktqn, abnvpr, xfadyhg, sxoxuhy, jmjybfb +qwgpbfg (46) +ebkdhne (54) +jzyjby (51) +lgvms (60) -> atrgeje, czhrelb, emdcjcc +ejootzk (21) +ejbhi (64) +drjgbw (83) +acvpax (92) +djwhzz (22) -> fbdpoc, kqfgpp, ejbhi, fkouq +vkzpqun (181) +ryhdf (43) +mmneogw (208) -> mtdnxdv, dixfg +ddssmn (1486) -> ysqoonr, ipnzaia, ljpndb +iijuiln (9) +fhezp (1004) -> otffrtx, iteoql, pssbgm +dhtyyg (343) +rvvuep (50) +wvtnd (115) -> lctnj, yxaki, abmcv +nhfhwsb (41) +lfqglc (12) +cunshl (203) -> docbp, bdlmbpt +deeinjt (59) +lkyrbu (67) +zbqwhi (135) -> vurgzbe, npblyg +bgkys (56) +epkixfl (9) +vriwfj (36) -> mkbkf, wmxih +dfhbypd (47) +tnluhpd (25) +zgyuoh (41) +abnvpr (173) -> hlpyj, zvynzb +mkdimt (84) +kvlbx (66) +ddayyiv (290) +iivbohi (48) +spfqkfm (51) +mkyhyh (45) +qivrp (95) -> oikboi, yoyfiwh +jhihznq (60) +lnjbmj (203) -> wlifgm, uuraq +axvuwo (295) +gqyhvji (23) +qljngh (110) -> ngnyte, qwgpbfg +opmnbbk (1191) -> yegoug, yqhvof, dgyrl, isuzre +dtfsxdh (88) +jeqojht (301) -> ikdgjcm, aimvgyf +bplrv (59) +yqflxg (34) +thxkub (39) +ednozov (42) +qhqqbl (89) +dfaui (19) +iyemub (34) +mhptn (310) +wqjbjg (44) +lwedn (19) +qxvtbfs (189) +cklybnh (26) +dmcvsjm (155) -> qavslj, gqyhvji +uefjnb (99) +ygtusut (23) +crfaeqg (252) +nepucl (1320) -> jvamqz, txejs, mmqsptl, wznaj +rmtjyq (68) -> srfoda, eddwubo +somurr (67) +wrvyeig (23) +tvnoctm (45) +blofhut (11) +bqjch (167) -> kutwy, qnzej +xenad (25) +zlqtv (14) +lodegh (87) +ntdeo (360) -> ewrnfma, kgprdd, giuua, wjwnd, hlddv +sitfw (134) -> fhptqw, pjjmx, uwbonvb +ieetr (45) -> ujhhibr, togwcf, bwxrzd, wbzmod +scxgu (71) +xwagm (81) -> qnfptsg, npipcju +fmdfzpk (89) +ynirob (221) -> wjlprje, gxhnsq +gmfsqw (30) -> aotgdc, cbtbxyj, lfopzn, smiki +vlhsdy (449) -> souqsh, pkdky, vtuzdmb +btfwq (343) -> cnndv, zsgegr +vheuyos (41) +bevzsm (41) +xfadyhg (117) -> mtxtg, bwhjf +gjtwc (96) -> tjepyd, rnnqgvs, pzzerxc, tusmyhc, jzytjy +koordg (1686) -> pbrfxep, qldtb, toqcntj +ftiupez (79) +gxlnyfk (9) +uwflq (54) +jborbs (90) +bwxrzd (82) +razhq (135) -> detrtr, wpqtlt, pyjlxpa, gvhnj +nvulzcj (93) -> mvrhyd, jbesus +wlifgm (22) +dfrdsx (92) +apangy (91) +qybpmcs (1503) -> mcarhq, bajivws, vriwfj, geqhfh, xyfqbw, ztkiwjh +smllqwu (22) +ruspne (64) +bqygu (602) -> zjuaeyb, jacxtkj, qxhuu, qckcj, ydsqnu, nvulzcj +obplhib (35) +obfhgbl (6) +uujwdtb (91) +odvzjj (49) +znbzdqc (90) +ghkvjcx (75) +mansket (10) +bjqbgn (92) +qwike (45) +otffrtx (98) -> sgkjjhe, jsuvvc +nsehz (82) +rajgq (57) -> vrflxtt, hnsyjq, bgfqi, rnncmf, lnjbmj, bevree, sxzfd +qypftq (11) +kstjj (1875) -> vvqnfr, gcuqah, cixxs +fmhuoa (94) +azyuh (78) +yhvvk (87) +giyfh (86) +cnndv (15) +mtxtg (79) +yopixg (144) -> xzbuxg, wbbiy +nnjokq (52) +rmczumv (74) +zkeocg (45) -> nifolyc, bgkys, eieslp, olywf +bwpyz (77) +hpxkzm (88) +kmwsdo (44) +chwnp (41) -> deeinjt, fmpkn, bplrv, nhqcyo +esnoa (10087) -> dxfln, lzeeb, xutehnq +bgilhnw (94) +detrtr (22) +cixxs (80) -> yevvy, aafaeyd +svkkmgi (94) -> lubjlxb, uzjxnwf +tpxwzh (38) +tkekg (7272) -> gjtwc, fxyfmtw, tuaafw, jxllcpv +verta (117) -> yqflxg, iyemub, bfcpfc, xfhxb +cuxbqo (67) +xrporzt (46) -> vizxyti, vrfrgqq, cwadvj +cpzhmuv (41) +ggwcjup (189) -> aavcuhq, acznm, swukjd, smllqwu +qftda (78) +vlxrpve (131) -> dcxprn, lzfbfx +dtvxbn (31) -> iqlxjrp, dgpyy +irbpync (25) +vgqdk (66) +lxvsklc (47) +ypdcg (372) +eepvqlh (99) -> olauul, ghkvjcx +dgvxrd (83) +virxd (64) +bhvxkx (78) +wsgicvu (92) +duwsfyh (20) +bkhouo (85) +jeluq (95) -> simjssf, otnkggc, oeyvbro, dptrckz +lwqrj (67) +dkxszcn (27) -> zmmnvt, osxza, vhdea +ydsqnu (172) -> eeqszay, kmmejxq, rlgjt +gpzdwzc (21) +bngep (48) +zlhwwj (35) +gsivsr (88) +uzrqz (61) -> ctofl, ikcofec, eywyawe, qdykimk +dzvqmjz (68) +dlncdim (79) +nuytwqt (79) +gxmyaep (12) +nfuhle (69) +bjgyr (89) -> abmxib, vxbubjs +ksznx (27) +jpxcpds (30) +prcff (27) +offde (43) +dpqqukb (35) +rwiet (335) -> rgjrr, vhechuz +fwhbf (84) +amhaz (39) -> pvnsq, vlxrpve, fchnaw, toejq, dnxvlw, iqjhw, uksfrmb +sktjkgs (91) +uiphn (36) +gruvxkx (778) -> dhtyyg, fcaaq, qkhciro +wzicni (61) +emwgz (1072) -> erqmft, bprqu, vjeqj +xarbaxi (760) -> jwani, wrigvm +epgmufe (90) +kqkdd (60) +gzpbfr (41) +fkfhz (28) +gckpcy (75) +mhscf (99) +ypymf (204) -> rtckm, xlkgp +qlphalp (44) +jkqctlo (90) +tgdxj (51) +sdpmpe (32) +uqqjmps (44) +bfcpfc (34) +swukjd (22) +wflrs (9) +ldeelvr (19) +npoep (164) +cxokpea (90) +bunddd (61) +mlufac (96) -> ajkaxbk, ypatkqb, smatb, dokkjf +snlalj (96) -> budlmc, lfhkif +kqfgpp (64) +smiki (67) +soocm (7) +lywwhf (78) +jbesus (68) +osxza (82) +exjlwux (43) +ueszsu (885) -> scglak, cwlzph, bqkjt +lzfbfx (67) +cknaaem (8090) -> sgwhkc, yddig, aywmn, ggwcjup, ioabb, wkatvkd, huongnb +zibnqys (67) +qfaiy (99) +xwdxtws (45) -> etrstos, pqalwfs, ypdcg +eefthpt (86) +iyhelv (1388) -> ghgsrqm, svkkmgi, arwpamw +xqjqedz (61) +uuraq (22) +qzrbg (8098) -> rajgq, btahmaz, emwgz +jyuww (55) -> bngep, nxszwh, mjkvgm, iivbohi +syjeatu (54) +akzavdu (130) -> ubcenyy, hrckiut +powzs (217) -> rgjigx, fgrhkdd +yeqdida (48) +gnoisq (76) +ywzaw (9) +campr (52) +tsfmg (79) -> zrpnsh, qtuxuwe +srubp (76) +igrjbzz (81) -> mkdimt, nagjilt +nzhby (61) -> wufwm, verta, eezhvk, axftz, lswbgy +ctulmjv (110) -> lgiwd, vkdxy +rfjilj (278) +bprqu (116) -> wzdcg, ezyzl +frlpmld (5) +flqvd (32) +hpbcytx (13) +lkvju (464) -> zfxyqi, vkzpqun, jawskc +dsstz (254) +bczlzx (63) +epxqmky (87) +atrgeje (71) +lxbsb (97) +iszhf (17) -> qftda, bvcrfun +qdsbwl (33) -> lsecoh, ampem, jhiejzb, fabvi +ahbhxn (227) -> ufbyegt, ksxbwm +vflryv (83) +dcqtq (84) +mynoky (11) +wtpzrwa (36) +pwxyk (25) -> cwzzlp, xrporzt, omhqjws +gwllcp (5) +xqewue (73) +mjsib (203) -> wpanqd, zlhwwj +ygkjkzl (37) +rzjbs (99) +drrlizg (27) +ocynqs (207) +tuezm (67) +qdykimk (11) +fbdpoc (64) +moyxzbt (27) -> alwkx, znbzdqc +uautcpo (26) +trvnbpq (20) -> kuswuil, razhq, ipauj, kekbi, izyzvs, gglbk, nputbbu +qedztsd (28) +mphqxmj (41) +wmrxba (47) +oiksv (84) +ltpdyh (71) +olufpv (13) +yxaki (54) +djsczmj (9) +mvrhyd (68) +pjjmx (31) +conuwmt (9) +bzlgvwt (352) -> prjpe, itcgi, qypftq +yrhrrr (70) -> edtzpv, obtsuh, mmneogw, kjvnox, fbyfuuo, vthnptc, mhptn +jxllcpv (1510) -> oraaeb, exiatbf, epkixfl, djsczmj +izqkafc (61) +jsuvvc (62) +zegmhba (216) -> mansket, cgxxf, bwkhwca, gzgqh +ufthnyr (52) -> gbgzoy, yhfcugm, tjhtlqt +reeaojr (96) -> mphqxmj, duron +gcuqah (122) -> vmmtxcw, chriadz +rlgjt (19) +bfmwqqf (76) +knczsj (315) -> hpyfzew, epywpbm +twfzsig (173) -> fhdcvd, pvoch +nkflspq (60) +ddfvxuh (117) -> cuxbqo, buurids, tuezm, zibnqys +hwyjtzo (27) +iukroo (51) +rytowol (157) -> nmpozu, impwda, hexamha +ooevokb (56) +npipcju (12) +gbwdd (83) -> esquqjv, lfyyq, jktzsu, mcbkdjm, vszkz +udoins (88) -> fmrbyn, abeyout, uqmwqye, bologkp, nyhlmwv, smqdbd +hxsausc (205) -> anlhcj, obplhib +hlpyj (51) +gique (27) -> uneul, lwyej, fwhbf, yhnfc +nynvxxt (411) -> xybyxrz, bkckl, gndfat +zfxyqi (141) -> qyjllh, ambyx +cvfyti (60) +vpkja (9336) -> djwoy, bbmrv, bdrcuw +mroag (1535) -> criyk, hkzfl +oxudyzv (54) +pqkudqa (11) +qwgal (52) +jjdefjc (193) -> allxyqf, cqdcsas +xoolwto (197) -> evayy, uiphn +qckcj (229) +vrflxtt (57) -> dxuzg, naupker +nitloc (250) +yegxpjz (357) -> skxmk, ykqcfv +docbp (46) +mekaep (6) +psgqug (175) -> zhunqhj, azyuh +vjeqj (50) -> rtqef, tofxrp +qxhuu (143) -> ywtmxkk, jtnvh +wczux (41) -> zmgehs, wffua, vjvbn +tzvshk (9) +xzbuxg (15) +dribos (1213) -> cjdmv, lpozpnx, jknws +cwagf (89) +arwpamw (134) -> uoztb, evsryno +bfmemro (319) +vkdxy (58) +wbzmod (82) +fkouq (64) +uwcumu (989) -> bsaqdlw, dfikzif, qivrp +btahmaz (493) -> wyfod, qjwjgap, jeluq +apvdjw (41) +vulgw (66) -> uefjnb, eiqkt, secmp +cxiqycp (98) +aimvgyf (9) +icdth (153) -> ksznx, rttef +lxmob (25) +ybcmydv (54) -> mdhzx, mtpmeyy, foyrjn, ykvbw, xqour +eeqszay (19) +lvcpzy (61) +alwkx (90) +ysqoonr (249) +hiibilo (273) -> flutk, xwqwjpe +kmihua (52) +cjjge (80) +ohtrv (176) -> wflrs, omicyg +idmaspp (64) +acznm (22) +eilena (47) +nvnqv (81) +npblyg (57) +dptrckz (84) +scpzva (79) +ugdcq (94) +ikdgjcm (9) +fucsb (24047) -> uzvsyt, bcawzmn, cknaaem, ybcmydv, rphyyst, ikqwjn, vpkja +alseh (5) +seeusvs (69) +epywpbm (29) +erieyzj (113) -> odvzjj, gcepy +ieiyqb (87) +mejujn (67) +czgwxvf (121) -> wtpzrwa, vpcnw +almjyt (46) -> ruspne, xsmuszr +rluqka (94) +pvnsq (109) -> sqlwsz, bhvxkx +otivo (84) -> nsehz, caufhb +cvdatwa (91) +rnncmf (209) -> smcmduw, tsaqdup +tuaafw (643) -> deqakr, zcyzaxo, xdvfq +bologkp (142) -> syjeatu, ylmgpwu, ebkdhne, ocfqtr +xcrfey (54) +sefsszz (92) +xcjfiq (39) +gvhnj (22) +eieslp (56) +rrdpahj (26) +sbrhj (159) -> ovtzpu, pjqxvcx +dnxvlw (265) +mmbhu (269) -> cqysfwi, twmxk +arcnlfo (54) +ezftzv (56) -> esvdf, dpyag, zkeocg, lwgeanp, bqjch, xoolwto +igwsote (6) +nzayo (5) +anlhcj (35) +zacca (272) -> xkzrpp, sijmk, zjyaaoc +xqour (84) -> jjdefjc, cvhuwne, powzs, fibrh, chhjhsu, kcnabhn, lgvms +iezqyyh (45) +fynfku (33) -> jjlen, oiksv +gsgsoo (259) -> dvehwh, mynoky +ytnamqm (28) +befwl (99) +rttef (27) +hgpeqh (13) +owbglst (77) +urbknyn (45) -> yrudtf, lfhkna +znaap (91) +fgsiued (402) +aperzqo (91) +nmwst (189) +cvgwkop (29) +sgkjjhe (62) +uojvtmd (10) -> fcavj, ajqhy, bjqbgn, amzxtvd +qrfmb (97) -> nzayo, mukks, alseh, agvigpm +cqysfwi (25) +dcxprn (67) +uyklfxt (174) -> jtsahle, geqes +ipnzaia (75) -> pqdnn, epxqmky +jrzeg (84) +xlcvwa (92) +rzvmuhc (74) +twumak (656) -> znntc, accmwfa, qrfmb +menqop (97) +sqdnri (38) +zcuix (52) +viydtj (10) -> kstjj, qybpmcs, qpiwrz, koordg +mukgev (174) -> bevzsm, faucj +yhnfc (84) +mktrq (41) +jsnlpme (121) -> fgbmgk, ytnamqm +dnqva (79) -> apoom, hjvegbe, ttsik, gcjjvj, wrucr, xnpbag +lfkpbw (91) +wcfib (185) -> saskhnf, tqhbqhb +dpyag (259) -> jwymbhh, gwllcp +isuzre (154) +urmwxm (84) +olryvzf (27) +lpozpnx (93) -> bawsdp, eyfui +bmucb (42) +taadcy (49) -> qhqqbl, zhcka, vxfsl +opcrls (29) +rvrln (74) -> fjxjp, glvpo +xemhgy (90) +bxiiba (57) +falzunq (15) +tazjcwi (90) +sijmk (89) -> dmfzrwz, nuautun +fsetxvb (203) -> erhgm, tnuvco, deujsoj +nmcrmt (74) +xfqfzsh (113) -> vnlet, baomcxj, arcnlfo +ykpsek (84) -> xgudb, fucsb, rsalq, xjllex, splbrdu +mfqcnw (64) -> rgiro, zfwxd, ggtdtk +ioabb (89) -> xakcd, bgilhnw +dazaikq (67) +zwhvins (1493) -> igrjbzz, zbqwhi, zlcappl +lubjlxb (95) +lazhif (8160) -> pwxyk, harlf, mfqcnw +fouvfkn (5208) -> fahfz, wvkrjz, awpysm +xjllex (64931) -> xjqjmx, mkvdfih, gbwdd +iteoql (46) -> zkyawx, kmwsdo, qlphalp, tnpjqk +tjcnb (96) +uqhati (77) +splbrdu (58) -> gqdyvi, qzrbg, esnoa, hxnxfk, ialiosa, tkekg, oskyl +ylmgpwu (54) +ifixi (56) +srfoda (53) +lqhydgt (45) +mhfbh (25) -> oieobzw, uhbty, utdyk, utcwj, njryk, mswtfmy +uijhb (29) +erqmft (72) -> drjgbw, aoxfg +iafal (32) +zmgehs (79) +simjssf (84) +uclrhqy (52) +dkshm (91) +vtlju (54) +ialiosa (8035) -> opmnbbk, gruvxkx, uwldrgf +byffz (64) +wrinrd (39) +qbmsizh (37) +exwnwk (65) +vizxyti (95) +achnat (91) +fibrh (195) -> fdjrm, oxngag +uujpswh (35) +wzgnpbd (12) +angwk (97) +rbqbboq (13) +bevree (89) -> dlncdim, scpzva +obtsuh (106) -> xjtvw, iukroo, lpuzdj, zobxdhc +klhlxb (50) +uodkl (67) -> rmdxq, pdsuhsj +evsryno (75) +bwkhwca (10) +mmqsptl (45) -> acvpax, sfegieu +tsywh (38) +fgbmgk (28) +lgiwd (58) +noiubo (30) +vgkkp (34) +zlizsa (82) -> azrafw, pbfyx +gcvsbqg (12) +wbyisd (73) -> yubyr, dmmriu +cpdtit (94) -> gqdbu, oawmfyx +ajkhou (28) +yarqa (68) +ijpkw (28) +qqyqj (86) +xjtvw (51) +tofxrp (94) +srgev (17) +mswtfmy (147) -> cwsycss, isrdlt +cqhwrn (97) +oqwgc (178) +hihdfp (75) +jjlen (84) +mzogi (77) +xjwsq (69) +bgfqi (53) -> acfxsgz, angwk +mjkvgm (48) +fckqt (6) -> wrmebwn, cxiqycp +zmmnvt (82) +sliim (28) +qromdd (52) +cjntq (591) -> wvtnd, chwnp, hqpikjx, ojdec, wgfxt +nanka (67) +azdkxw (741) -> umpivl, wbyisd, grglx +dfikzif (195) -> mwjtujw, bhjuuh +deowe (208) +xumalc (59) -> jepwvl, yuutd, eilena, fypzx +nqvpxt (52) +fshbxj (130) -> hdhjbvn, lksjvrl +zrpnsh (26) +wfysif (140) -> vktggdu, seeusvs +ccjay (28) +geqes (37) +wuwksnc (49) +rsalq (47820) -> sdxbol, irqwcab, jiaiwto, viydtj, uduyfo +gotnp (99) +wyaatnb (6) -> ejyyd, gotnp, mhscf, xvfbt +wpqtlt (22) +nagjilt (84) +mkvdfih (1505) -> nhfqb, cyahch, bfznf +oskyl (8899) -> mhfbh, bzmlka, zlkhsa +xybyxrz (281) -> ytnkx, brofu +qvsyjp (28) +xvfbt (99) +mtmpaji (10) +togwcf (82) +dxhqs (56) +vurgzbe (57) +wbbiy (15) +avueexg (63) +acpvgye (57) +vktggdu (69) +dgpyy (79) +oomcfz (65) +fypzx (47) +naupker (95) +voafbv (533) -> hmlkdv, afhbfu, gspvc, uqxdea +jfpqxeb (52) +njryk (18) -> mzogi, ieekq, pkmojw +ocleuky (41) +cjoktd (222) -> elulm, wymhyko +agvigpm (5) +lfhkif (77) +rmhroyf (65) +ogcra (78) -> cxokpea, pdftmlf +elpequ (87) -> lqhydgt, mkyhyh +uycpqa (38) +mwvluyo (173) +xlqya (89) -> mikmp, klhlxb +lmpfqe (59) +rpuefig (81) +xnvqjpw (81) +ecaqtyw (99) +cqusdqo (121) -> hgpeqh, iqaret, yiwrl, rbqbboq +mwxuez (203) -> hlidsi, lfkpbw +wrigvm (92) +ammsc (112) -> fhbphvw, uudmxem, tpxwzh +qolhl (53) +ytjnkx (50) -> pguona, befwl +mvgcb (50) +kuswuil (127) -> yhksuh, bhfbkik +bdlmbpt (46) +zjuaeyb (195) -> cdthf, rtmloqi +omhqjws (139) -> boolrdh, lmcvdg +bzmlka (937) -> nomlds, almlu, ohtrv +tghuhpn (59) +souqsh (8) -> ortnis, vnseppy +jawskc (69) -> czfbso, qedztsd, ajkhou, sliim +hvjusf (15) +xaxmer (17) +ajqhy (92) +vmmtxcw (13) +oyiem (15) +csypcco (163) -> jgeknun, menqop +eyfui (67) +gspvc (75) -> xujppza, thizds +uhrkq (61) +xbrnkt (24) +ojdec (157) -> nkflspq, kyshwy +xzvbd (84) +zkyawx (44) +htlvlk (26) +ytnkx (12) +rmnxqwr (54) +onasr (57) +afajf (40) +kfuvm (39) +vdongnn (34) +wrmebwn (98) +pbrfxep (22) -> avueexg, bczlzx, kmgdk +jajds (81) +glvea (913) -> ackdjv, ammsc, iygaq, tqslgy +ijpaqb (93) -> campr, pqmiyd, jfpqxeb +wuypkq (51) +wohqjaq (295) +iqjhw (119) -> kwqnczk, ffulcj +yrudtf (30) +tnuvco (67) -> jkqctlo, jborbs +kyshwy (60) +baomcxj (54) diff --git a/2017/07/solve.py b/2017/07/solve.py new file mode 100644 index 0000000..27c702e --- /dev/null +++ b/2017/07/solve.py @@ -0,0 +1,116 @@ +import re +import sys + +# PART 1 + +def any_key(d): + return list(d)[0] + +class Tower: + PROG_RE = r"(\S+) \((\d+)\)( -> (.*))?\n" + + def __init__(self, weight_of, children_of, parent_of): + self.wo = weight_of + self.co = children_of + self.po = parent_of + + @classmethod + def from_file(cls, filename): + weight_of = {} # name -> weight + children_of = {} # name -> children + parent_of = {} # name -> parent + + with open(filename, "r") as f: + for line in f: + match = re.fullmatch(cls.PROG_RE, line) + + name = match.group(1) + weight = int(match.group(2)) + if match.group(4): + children = match.group(4).split(", ") + else: + children = [] + + weight_of[name] = weight + children_of[name] = children + for child in children: + parent_of[child] = name + + return cls(weight_of, children_of, parent_of) + + def find_root(self): + program = any_key(self.po) + while program in self.po: + program = self.po[program] + return program + +# PART 2 + +# This part is implemented really shitty. It makes a lot of assumptions and +# will probably break the second the input changes or you're just unlucky. +# For my particular input, it worked though. +# +# The basic idea of the algorithm is: +# +# 1. Find the plate where one branch has a different weight from all the others +# 2. Find out which branch weight is wrong and whic weights are correct +# 3. Fix the branch's root program's weight + + def weight(self, name): + return self.wo[name] + sum(self.weight(c) for c in self.co[name]) + + def balanced(self, name): + cs = self.co[name] + ws = [self.weight(c) for c in cs] + return min(ws) == max(ws) + + def unbalanced_child(self, name): + for c in self.co[name]: + if not self.balanced(c): + return c + + def find_imbalance(self, name): + c = self.unbalanced_child(name) + if c is None: + weights = [(c, self.weight(c)) for c in self.co[name]] + return weights + else: + return self.find_imbalance(c) + + def fix_imbalance(self, weights): + # Which weight do we need to correct? + ws = [weight for (c, weight) in weights] + if ws.count(max(ws)) < ws.count(min(ws)): + weight = max(ws) + other = min(ws) + else: + weight = min(ws) + other = max(ws) + + # Wich program has that weight? + prog = None + for (p, w) in weights: + if w == weight: + prog = p + break + + # w_prog_soll - w_prog = w_soll - w_branch + # w_prog_soll = w_soll - w_branch + w_prog + # w_prog_soll = w_soll - (w_branch - w_prog) + w_prog = self.wo[prog] + w_soll = other + w_branch = self.weight(prog) + return w_soll - (w_branch - w_prog) + +def main(filename): + print(f"Solutions for {filename}") + tower = Tower.from_file(filename) + root = tower.find_root() + print(f"Part 1: {root}") + weights = tower.find_imbalance(root) + fixed = tower.fix_imbalance(weights) + print(f"Part 2: {fixed}") + +if __name__ == "__main__": + for filename in sys.argv[1:]: + main(filename) diff --git a/2017/07/test_input.txt b/2017/07/test_input.txt new file mode 100644 index 0000000..8a41324 --- /dev/null +++ b/2017/07/test_input.txt @@ -0,0 +1,13 @@ +pbga (66) +xhth (57) +ebii (61) +havc (66) +ktlj (57) +fwft (72) -> ktlj, cntj, xhth +qoyq (66) +padx (45) -> pbga, havc, qoyq +tknk (41) -> ugml, padx, fwft +jptl (61) +ugml (68) -> gyxo, ebii, jptl +gyxo (61) +cntj (57)