RNKD6T72QQUFC3NNFTH4ZXFUNJWU5F3LXGUNIOJAMP53UMP4HNGAC package mainimport "core:os"import "core:fmt"import "core:strings"import "core:strconv"import "core:container"// `{ 'a'..'z' }` didn't work :(All : bit_set['a'..'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'};None : bit_set['a'..'z'] : {};Person :: struct {answers: bit_set['a'..'z']}Group :: struct {answers: bit_set['a'..'z']people: [dynamic]Person,answer_count: int,all_answer_count: int,}main :: proc() {input, err := os.read_entire_file("input.txt");inputStr := string(input);lines := strings.split(inputStr, "\n");groups := make([dynamic]Group, 0);currentGroup := Group { {}, make([dynamic]Person, 0), 0, 0 };totalAnswerCount := 0;totalAllAnswerCount := 0;for line in lines {line := strings.trim_space(line);if line == "" {// Append current groupappend(&groups, currentGroup);totalAnswerCount += currentGroup.answer_count;answers := All;if len(currentGroup.people) <= 0 do answers = None;for person in currentGroup.people {for c in 'a'..'z' {if c not_in person.answers do answers &~= { c };}}all_count := 0;for c in 'a'..'z' {if c in answers do all_count += 1;}totalAllAnswerCount += all_count;// New groupcurrentGroup = Group { {}, make([dynamic]Person, 0), 0, all_count };} else {person := Person {};for c in line {if c not_in currentGroup.answers {currentGroup.answer_count += 1;}currentGroup.answers |= { c };person.answers |= { c };}append(¤tGroup.people, person);}}fmt.println(totalAnswerCount, totalAllAnswerCount);}
trrttrrttrfdrhugwuksvrotesnouwyrdftwofuspcmvenhcnxpsmuqiawcxovminqpawusqwaxjmupnsicanpskchzojyeguwrsoqauprxzgmycvefsorplgezycaungrecposyizwauayeptrilsnguzcomvwclvlcwxmuwcflhpkjorblnvwticwcmzlhyvowmqzixclacsrjdyxizfyczpbxltiqxjhrgefbkmeqrgbfhjxkcmcatsrkyjulmfzvixeteyxvimulfkczqrjsaxrtlyaqemsucjzkifvdrjlmncsiftxaeyzvpukocgrnldhjajicwgntvuhkcxgajhlnhczyoipegqwsubvxmazapvqdbyeiulmrsxqmuxbtispezvaykibpqvsxaueymzrjpzavtxymusibeqiomtepobmfpitqdehrmoieptiprtomehdvqtfmvfqdmtvfmqtdsvacthonwbmxiyukjrrmtjsowahbxnwopxrhjdantsblmekunwnlarwsoneranjzfpignmvxqcmjulrbmjrlbusjdlfgertkvlwvfoaxjknuhusapkhxafpuhsxuaphsxhaupexsfqhmryxjuapsmpjfbmjbfpzbdpmvijwyxkgrosheyjblgvprhmoszfwdxedyrjngwpueozmshvbxpevyiohbdgxrjsmzwybmexhpidzsgojvwrobcqvydzetjsuhgifyvdqgeithsfjzucobjfqzsiovutgwychbedqizcbjpshyretdgoflnvuhbefytgcvdzuaisqjoavfgqgqlqgqwgrfekswrjbzhyngsfwnkybhzegjrhkgywzefsnrbjzfkivbjeyrwnhdgsxztusijyhclvowfcwvjzuflhsyitowfjuyholzcsivtyfuhovjsitczwlrvpkmihljocmqzuwjtanvbrlcghznqxeadacngzqshiypqlnckzdvaevypwdushzimabuenuqgjekmdppvktlzeyjucbqhcwzepoasyivtufdlcturlyvoaipwznefhmsbrutmwurturturtanpqzltgbwyajxbermicgwhtzlvquandboftcjafrlghixmhltgkoxcrsqniaechylaxrjfgtietqhafdzgrmzyaefcqhdoehgtdqfzaleiplbwvqhgdrykmjzfcnotkxsvzlujuszboldxphtqywkvlzspkjmgqhviterhsqkpzitvlnajkxjxrmoustacxqxfwhxqvezygtuhqmklcbcmxrlzjsgphiwdvigexqfotmnsbcegwibdomtvcqnsxfsxtipmcndowbvfeqgtcdiefsqmgvxbownceqwvtifnbmgdsoxzsgtcvxmiqynfzehryvhawlcmtunbncirlgwyqudhybzlqwdangufuqjekwynmvtgxsdwqydnpgbuoojkqnxidugfchrwoqnhmbxjztapfdugzlejskuptnbekzlpujnbstglutzbpjkensgnktlpugbjzesomhqnxljiwkpvzudbtreayyqiknzbxvormgpjualtfwdejowmpeaqbxltzvdrynukiatdpobxsvicwzcvlbuotyxreqspaaotbscvdxpvipcabotsxpotaxbvcsjgzstxmyknhvdhbnjzgvmxkclsytdixljyqrtuuqlyrxtjrytlqjuxtyxrjqlulmdjczywfcdqgipmehturbnwvaoyxqkaruovhfscxglbmweznyitznqixgszmxqiwsngzvuhhzuvvhuzjyjyyjhyjyjrtcxjbpgszpgrcxmajstbnrhpasbtgcexoyrfsqucgdwxpitldcsyezmrvquixwpogakfjntbhlanovfcsitzebgxdkpjwqmlyhurywaflnbmovblwoynmavnmblwayvoymawvlnbgolyvobwanmxuceqqgxvkwmyqgcviulxpjzyuqptgcavzixgyvxicuzpqlpufgwaebhtckdriqylocrabdyihufpwgqelcdqfeubwrgaihpykhoclfpgubwqdraieyfrayspqundziewcgxbmhlaaawceqnfpyhkwaomzdlrigjutsvqdsjlwiobvyknxzuechpfgtaiyhflgtqakvwedpznjcuosviwbayqdumknsjzodzmuinwqybskjotlasuzjnbkdoqawmiyiuvdjaxnvjdixnauvnjaxdiutqgtqgqtgvyncxbksgorfaijzdeqhtplwdxjyesngbrotzlaqckwfphtgsqcmzbirkoapyoayqpgrcstmasrocipymhgqtvacyxomgrsqptodvreuapqdeqropauoruqbdeapuordpeqauarodepqcewlriilbilpfsmjcerdbcgbmjerdspgdbpcemrjsolnbwczufamjsrtipvkqyhxghqbirpwczgoualvmfktsjynxwvkypxhoaujrlzbnsiqgctmfxqiawmghagbxrgsxabjuqhvcvqjuhbcuhjcvqhjcuvqcuvhqjmkntuosgpawymjpgvtaysfrcklllllazewzplpppgysbeliqhxtnavjwpczsmdfkcucjseszuolseugixiubmhvoejrfypvrepyojmihxxktarvmjgzfyhpioldecqelhdmcripxqfvotygjkmcyfrvgtlhxpjiqekdorlvodgxtchfipjykemqdxcvlrhmpyqkitoeujgfwslomfkcbvqqcsowkvbtywcxhgjsnkoqpzeamwsucfoqkoqiskmrwczepuliflijefpplibfyrednbbhvuujobdmqsnaulwtuflpeczrukgggggkmugldxteajgkotaelmuxtxkomeluagcujxkyzecrmgxjkzybzutydnnztybduntzbydfudzbjyeaprxgpyjqmbdodhbpjyrchkvqujurthlkcqsppppsparlofnhbdrhadnblfjhnrxldafztukfgrgufktfdktsujgykjyhddcyjjydedxvgzptbfhniquylokhlnzpgfuvxktbydqyugtqxdpbnklhvfzasersraejkhtdoevsaktyfulpjhxzrbgwjteiqnkcheqtwvaxkhjysfsahmxqevjtcgyeivjsdrzwubomkpafltwmlpbuaojiykvzrfdsteoueiabrdzyfsjmklvtpwrfteozmijdypwabuvkslnqiycrwsjgdohmkvuzlougqkdscrywnjihvlowsvkugqldnjcyrxiahdvhykqlnusowicjgrkurqvjnbgzxocwhlfeditystoxuhcldgybfesiqzjnwrdhkloqwpmicyzvakmwiaplhtylmuieakwhfypsaklihpwyfmtuxlhzeflniadjcpbymrskumzqhctzuhmqtmtgzohuvqtzuxkktxuzmputbxokzvxztkutxzukogsusoarnvdkyuzfpeqwtibhjsqcoyuawvktbldpzermfjcjyvuzkpqrwbftemodlatabdoukcrlyvmfpjzwqefytknqplmduzxhbrecajosvgiwqfvyerdktapobmwjzulcgfyznrvnpoihdnwaqmejbctkfnunikzvactkmwqijosfnglerfgosnalrvwkjiumtczcflqhzughqcflmwflcqhhzqlfchclfqvhshvsvhsfisvlybdgbciulxvbkoruxqcgpqpzrxubckgrblgszhvuavsqrbuozhjgtrzushvgbqkauenxhwmtrobnefzodwmysqplvbtxhkbxhemunqkwoteipjypeimfweitdlpipemjuyyumjcmjyuhcaivxjntwopfbuddxcajbzvpinofuthwxwubvdhtnfpjicoaipahvxtnobjdwucfpdajicbovxhntwufuxtbzyqoijcgnkrpsscuojrikthyzbpnqrdmnztsirumthsozjdinmistcxnfzadryqzrndtsimkikixkikiluihqbcygnpvokrjwxaqxnjklouahviycrbpgwryhqvbkjxanpwuolgciifmymixplfsyoyifmfiymiojlkgqnfpcixuqcpfonmlyjkikcjoqnplfkniwopcfaqhjlpwqfcnioargvjlekizpbgvruchjtsyxftiyxeshupcgjkmdnbwufhbhwubfahufbwkuwbfhhfbwuwrbsjcniyaeqvdufzxoplgedjzpltwqihmygxocayagzyawxkbvbjmxvwdoccdmosxjrvoycvnjxmbdkarjkdmvcxobszmojfdcctxmjvkpaliosgnqejmpcqoinkeljmvasgnvbzjlopmgqeasiklezonbtdpxkeuiohtlpnqrxvbolpgetfmnykxbtnlopzabxyegtecjfewvehysltzaoxfwcikgupmbdjoditawxjkeushbmyczflpgikycstwfjdbxpegzauolmhayxchoitgufzewskbmljpdxdshbltjzeupfcymigaownktbkhywuejmqdzumumlwmuyumumgoidsnkyrzpulgexkdyhilnakiydnzljgvzespawsvqakvajssavbasjvnegfunegfuungezqfwufngewunegfpnnnxtzpvhjugsknlztuhgpvmehgcizytvwllltmwjsoiqfxbaeivhdxeofspjumabcrtkwzmbneowitsgfxjqahrhrjyrlfufcqrfrnrzafyrkfbpwcdvnobwkovwndyvwnodvadbonwlmqbwikvtlnauysporxjxyzmnabiecvtpuoguxhvmnyocbpaitgraltxsdfnbeuzcvpqgosmjhbmvokmovkwevqpmrblnfdkcjaaprbvjwixcldeyfecwjdupovbahzltfnwdjvjwvndnwdjvjdwvndvjnwplzqokjdmehckzljpqohtecdmpeclzqjwohdmkpmfpuwmfjfmpmpffpmsgrfsgfrgrsfgrsfmkfkldyqknfknqzvlsdtlnkydqyjtwhgckazeslbimodapxfqavouixndgzjumhcslyfkwnbqxqrlniepavtbdothosbezjxwcumnyrkvwrynhxmcuevqizspatbokpjmwysmysjpwysjwmpwmjyspywmjspfmmnuprmzidirwdwlbqsacgumfzpjgivlupwuwjmjjjjpjmybweuwmebyweymbmwbeyzfsbjpgfzjsvfzscjksfzjyvvyyvyvvyroydftqkjmanhrzmgsqbfuvyxlanexhgcfehmcxagnlxaglnwcehgukjjiyrwfhxxhwfhctwbxfhxwfhwxfuzlheoysartmnwpqizrjqlaiosptuywipatowrsyuzlvqpajsyiultrqocwzqtyciuzlpsorwafqiehbrjgpzladtqzbhloanjlmwbdjqnxzhawnjqvzuhladybsfekzbohfbzeokupjzuafcgzitupjlommlzfitjpoucgljzgfpcmitouwjavhtfgulxbsjlbhaugwesftxvabulpizgsaxyszlohfrdkqjvpxnqsbefvijroumzckwtcxmtpbjfnesuqowrkvisfcpjunwoivekbrmqxtevupsfnxrbmjciwqtkoxriqnwvgusceydhmjoaltjdvrcnmpsqayugewhiochydsyphcryhocychychqyewqoeqzueqkevyqegehqsfybktionvlazuxjpdginvqthklyspxbfoajudhpblkjfyguovywvhlpgbncxoeynmdtojpzgwbyfnehnqyoeeymnoovqyenxnrlkscnxlcnvwjmxcxuoybyoblxgzdxxzvddxtzduzxjmxpzaovctejyxlitevzyktxvgfezyrkhzhghxkdlaopujfzkptczhbqrncqhztbpnrfqbtrucpzhnbrthnqpzcueqrwicwoarjgxesbfpzerxbtojasdajsroexbpgedrabjsoxmjkviqymkqjyiqmykijqmjhikymjkviyqhqoqhjrxhjqtrwlfaxclxzfcczxflclxftfcxlumoecsdkqjicskqpoudmqubmmuqdmiualxvbgmmvxqmvlxvmxppvgpuvckgbzxdytoamsweqcnkfjmihprxwgyiqkxfpzlatbousrvnzfqlgwktyivruoxabnspfbtragkovyiwsxnlqzupxonjzkrghmdyiuxduizjmgronhykmhdgryiuzknjxodkrxougihnzmjyanyjhkobzplrqfggfpknwqdhsxacjmoblzpkflqubgzanjhohyzgunfviqobpjaklnzsipuegfacussixskmrynfbctozadewlsvnjyumfhzkpbggoqdapfivwkmexbswiqafmdoxgbekvppmkbaiqcewfvxdgofvoepywahjqkdzgibmxwigfkqvsebpoxadmornhgxjqkytvubzmekbicruqgdcwnddwncdcownaerdsasrvrapsarfgsonxscrauowpihungbxfvqlpvontulxsbiwqjrgczkfvdmhxbgunplewiqyfoxqixxxiexljckvcknvwjckqvjdqcjrvkqcvjrkoelmztvsjfkdaquwgbswgqozmadfklbihxetuvjwmlhcndgfjdvgojfhlnscmxbgkertlzmyhfncdplfgwmdhcnylxpvqawmvxqwlpymawaxmlypvqvxqpyalwmylrpqkzdalzfdkpqrayzagdyqprlsrztwihlaypbednoqxtdvrwmqfylacokzodrcyqkzmflwxvatqomxsptajeyczkdlvrfhwmsmswsmwjviyckehxjykczeviceybtkjivejhvkiycvceykjiaapohgqctumnfyqyofntmhjcxglkzmqdpcgtyoftoqjgacfmylfyzxtmdvehroupbsqkrmdvzqetfjiguobhxsckoudbxpeaygwnsfqzljxqnowpuvkfayseraysekchowuxntpqfekaycpfowstqunxvzuealdmkcgpniqueoyfhtbawlynfdhjdynhxbdvmadvaigbfaibgvfiaybvgfrglhpjedmnkczwsaxvuyiftqsgvncpmqrlzdykjoiewxtuhfathoirlzbaknezfsjydzswzwxzmyxnumzostgjeadfcykpltobeghltvqgopwrbakjmxyotanfpdscqkmwgfkwpgaztoumqnzeflkcnvpojytshxgiaxycazlfokejnhspgmvtqanytosfkzehvgpcjlxevbcxadzysgophrfnulktjkvdfiewxtyqzjynrgpaoyzaoyhsmuyobalcrfkfurfnrxmfrsrfjabjrmoskacxpvibhftgnlywuztpyvrloamuchkiwfxbgnjzjdtmvinzkoflgquhaewkisqucopyxbthnzrkujdylnxwwlciqdhptvtqsugawvocvcwqttwyqvcwcuvqtsrxzgyquigzruiqyxyrzqiugxxgouzylqmiruyiqxgrzxmbngtwkzfvdjzsfqvhtkcrswxnzimjdablcskjmxtqbiofnhljhyqxlukicmstbnbgihlkmjsncxqtdftriecaujqygkpdpitkrqgaefcjuyctheqrfyigpjukdapxcsqfhxyfsqcfcsvxqxgfqsvcfwrzvkpeischdgzojmnwyujbiydmusjhappxdvufaimohgrbeynczmeyzcgecphynqjpbxcgurqxewsoaqvwxgcloiqpowtxmnqwhbyirsmvkfjzpueactcamfypikohjurvqtswbehisewcbvjoqrmtkfpyuazmnvldiznlmdvimvlizndmldviznnivdlmzklejadniyugvsraeuygvinldksjdyjnsakeguivlhulsnyhgjiakedvkalgednsuihvyjqtgfmuipbkrsxnwfucprkgxlmqmacgfhpurwqkexhrnybjyjbbiyjsyjbgqsukyfdrzopbatmjvlnhrpltybxqugzkdvcesimfjawnewfsbyzoxdozxdbyefswzdbwyxsfoexeofzswydbmtfjbwqhgjbnqmogsreykueonrkbsyugjqmyqokjreuvbnpgmsubgqomjeysrkniqbxvszjmgnalfpupixmsbnavzujflqgkqismpjzaxvbgcunflxosqhlgpmsqohbmwgyqchjsikuolcojtkrcrkotjiaufsfvoaupfgzydtztypgfdfpfffkspetrpjrosvkxwvcexodslhftbnakimgzjymztdslovfixkhjyneabcwggkiwcedhxtnomyfjlbzsvaqphgrcfmhdzihqqqqztoneqhcgjrwdvftienuyqajhmwbogbploycntlbnoyvylnoebdrwzouehkbjlfyingqcaswzvjcqgrmasyopbhtnaznnananabzbzbztzbzbvusomasmaouvsglxdivzmbohnacjuppudzbmivaxnhclsjkvkphsuwgyrhsciohiyrcsgotrhysciogyicshrogzdkynwxqigusblkopzrbdwfncxwnmhzxdtvbjkasibezwyxdnkpccocyebmjsnxrityijstbmgeoxrmoxbritsydejjmosbexyirtbysfraicxqbaxqfsywircraxcbiqsfybsyqcixrfaiwdgnztphbkocqvsyelzeosypvkwbdhnilcgqtbzhkwnclpyvoqisgtdepfgovzctdwqelhbnyksitywvlghspczidnboqkerxwadjshpfwcztneudgkbnmrlhcaivzojuyqmuicgxvkpwfzqjnrhlosybpppppayyyyadwaawsvugrchzpwxyqipynwbjejwbanfxokdhenitqpzxjamsskxyimzhpqtndlytjmoaqixnkszphdpzhdnbxtmqeskifwpdhknrcxsztiqmvjnkitbvqvnkbjietqiqjkntbktdznbqjijqnibtkqyxkdjzhikhqjtbeyridzsmwnoylnqobwylsmlmawoynsjuiluqhwnrlgftdncbpbtndfgcpbpfngdctnpefbgdtcmtqruapuprmqatyumuymuymumyymuaymdqeuwesmqkdfujqvduameyjuoxaevyskyoajxsjoaysznxnrhdifpxvknvwzxrpipanivqxrlexcbqhjsafrnzpgimltewvukzyidtoqpymanivknipywuhsgyaqsegywfbzsjckgilmqnlmiqqlmiilqmbcbbbbqiularuljjlxkpujxtyerivfgomsdhnlwzcewacvmrdjtlnykhxuszifbohcotvyqlzkmytmfozklhqbnwxkgcidnpybfutvmhzpkuhzmxgnfycdtwobiuwgnvmpfyzkcxthbidqeplrhsifuvuhflevspqrilihufeqvprsaehfqiuprlvsphivqlsufrevitspgyendmzbuodvnsmguitpboyzeatmaubsexvgolpydnzibmieuzvpdotrgsynhwxjumrlocdthurtjwdxplmocrojlutxwkdyhcmlocwmjxrhdutdcrxjmohtwulzrnhfmnxgwbqivunasyddkhjnuhyayhuwiuexpgmzkhygopglyfuieczhtwhyicguvpemtlfdtlrhepcfzyuwigeqgkufbpckbuqciqbukcvpfkqoiemgmkeoqipgzogwipmkeqiopkmgwqteunzorbiuzuqbrizgueirbjlsujqrcktmnwxioqnfkzsctlbjvelhxwxwehlwlxfhzxwchlqkzwgpmlvmvqphjlimpqrhlivspvlmqvjuarpbtxenhkspdeixalsqunbhvjasbuhvpjnxevbphxujensroacocsnjwthqiduaqozmhuandtcjiwshzsdjuqnwtixacorjqwxhsodcriazntuuadcwhqtlnjbosiexjimgzntqwvfefdzgviwtnznoefrvcwibptifykegzwvnjojfmzaxnctuhgioichzukfjmgtnxofxucjlnghmditeydtjfxynmbuehacmtsostmobucaeubmtavescobtuypecahsmoubsamotecbddddxwdavvavdrebgljwqhypumaifxjuradeolqfbwmihnxpzshwtgqvxkhsqxgkjtwgkhtqwxisraktbjgxwqshgklyvoszrzgqrysovvogzsrylroyzvgpskjrzydovgnisacltdkawfpyqjsbwechirwvmzwtokcbwqltxjfpigahuondckvjxsqemclzokrbiutktmoczbulrzsavjjasvzzsajuvazjvshnamjhrecjvqwknsiytlfzguowmbabadsohcqbzhdqcsbzbudzhdnwhfsvptvvvvvzvfbpucdkmjqeioadtpyxrmgskhwbfzwdpfscunaqmligoqawystolvmjhxgbrflindhuycwycjkpshfwitndmwmwmgwmmswmwsgmzqpwlifcryjabxendnamrfposzgbqywcixeljfxrblzajswpctihqygenmzrmxisnfajygkwlcqebpdgudugimuqgdduggtwxdbtgxbwddxwtbgjolnaczkdfbsmurlatnfdicmuhejzoqvxgvzogjxqjqzgxvoqgvijozxvgqoxzjvruspmhlewoknnojmeblhuprkstfrhihrrrehmtxpkuysrlrgveotsfovfsretvtesorfkvvovvnyxfzesqgryxqfsgrritshypvfqkkkxktfuivcicuflubficiypucffoknbeaujiphdxgnpdkhaeoujfhnwaeofpmyvjkudlynfoewkixkywxndsfwnyfqxckipzxvyabwurlkfnhsxnkmyfgwycxspoyxbpzscopcyxsoriirirriringeojlwvkcymsdudunjgkomvlwyvkwdomlyjungiswlyvtgndqkbcopjxmferuazhludyrjxgqswhkmofpneictzabvhhhnhnwmulejyqxydulhfmnxacmgyxlcpnudoiuxyrlnmtzxnmidtysulipfdrqsiprxdavgcyinpkdwrmhjuexipadbrzolgftropxidvexqtxqetvemtqxbvkhzkifwmxeonupcaygtldsqvbdyvveydvydvdytxhdkerybmuaafhyuxdkbertmcyuxrewtbmdkjhfpvxgdkipxfgdvkikfvgixpddgvifxpkvtybfxskgrdpinsjtbzwmuxcnlpjsxnbwzhcmptluwzusacxbjnmpltqiwkszmjptxcnulbtdtosizdfrvjnihrbmfklbmylxvnkirsnirvcbkmlonatgjeqdfutofjugqnaednjfadqwugoetojaefunqtdgjdngfteuqaolfjsnmywoariimjnyarlwofaiolyfjwrmnlstramdyopsdrtlepnoyamyplsdtroamrysuomdpaltdumlsyaotprgfxlnvejorkwruoljnfxkesjyuobmlgzkitlmkgyrtojduzznpglmatuqekyjogulvozkmytjzsytjlogumkktehudzxrmajvqjhmydruxkghnmxcjkldpnhizmdwsptceojmgbhvfrokunzditcmexlwjgasqahtsizfglkdecqnymuwjxcgmrlkpzunuwgmamugghmuykihikyhkiyhiyhkkyhimvcjrufmfcjurvfrmvucjrucvmfjujrfvcmrzvugruzgpgdqucvliaekwyvyilsqcukagewcylwivaugeskqwiquaecyklgvquocakwyegvzlrijjjyafuivmfmzyivuamvayjqfbieuvymuafisbwbwsssjcnlpkzjhiyszxcpumkdreglyceuljzxdbspmgnhtirlvstgahuqycwempikhtcpdimwleveilhvtwpcmocsrqubwnlhemxpyfjkgdmslzhunejpfdwryqfkslizewnlesifzknweknizfwskeznsroifpwwztapgzcaugetwwazcugtenkwzyekmcjrqsdxxqrdbsfxtdusyrjdsxabrvildhoswzeboedzhlfbzohldbmeehldbofzglzpahcrsxoiqdqaxhzcesgzanixvbzaumfxkoznxattttdponyflcbgzuoluycbzedngfxrcilmyqzhfndfxpekhtlbafowjxlqhabuvzuzabuazgpmbdabuzzybuaxkiglgkxlilgixkkilxgksythvgaiwkqjmfbhivlayzgftpxnhbkrcziymuqjwsagfvolgfxywqtikanvorulmshczjbpdtplfzajrcugdutapblcjfgrziuztnapflcjdvrgfrdguctzljpaizfuersgqgrfuesqvksergaukqfyqfsiutrwcgnejobvbvbvbmuxydwqtzvjnvxmfyetdsuxvdmytiukgrxhjhabnurvpyvakpuwesyqnrksypwevikpvsyhwjnehqwmxtzswvrlawbocdzfgstoxqdwzhvrpbflegcnsmikyrtzujanlkykdsatijnyxmsxsmyosmybsymrbttvbarubwrstritbvziqwsjmehdyocntuxblglqjxndpmcyakheuvrwbvldiakteryfznqqebljwgvdoacszklzxvqeapbdkynlykqptmqkdlpjixerawshokmjiwramksehxoekxmirwaojhsiearwhokmjxsmrrbrrvblioszxngkadwbogjpsivkxfnjpcwsnuxkriblehvfydjnyxehusfvqablrcowidkpamwsadsasahjfgpqambsfvhsxihbfruacptajchyfahodnflkewnjayectywfreujvcnfayqmdpietcqixpvzdaonrymqnlofvpikjwuenjylcxwbksdrqafwaqodzxgxudoeqmhawxhiadwfqhquqihuhuquqhcrxhquwdimvrngsoeazpkfwyctjgroanpvszyemkfwjtcidjvwonsraytdgemifzcpktdsecwafikzongmvryjpzelpgjotxyqscnidwvfuamrkkhopamsbetmtoqjbwexfpkeopdumbktypmkoetbogptnbkmedsegnxfbtzoqnoxbkzfsgtdhfozyqasempnlciwbkrtowezgcvudlnhmsqkxppswqnomzldgecxkhptogxfrdwzglkzfxrowawryscxofzvmwohrtifbzuxnjczemryisbjdptxqtpcbisqyezjrmdybjpctrmzdsqiezsqcmypibrjedtztwcbpsyijqrdmeatwukjeorighvfsnfjohkugxzvnqwmtsabevuwenfoagktshjlwdhiauepytcsgokfjnvcylvzghwmjflwfvzgjyhcmfzgyjlmcvwhvwjygmzhclfabmbbhfjgwbhceioxmszzejxhbmtocgfdweblapcygxwvzhofmjgmxfhjzcewbofhpqtjzdeyluwnogmduemozjhlpqnwfygtzfmewnhqdpgjoytuleofygnuphwjmlqztdwvaoevfabqwdkvawggxprowhvytbiamfcjesuexcvhbsujfatrpmwgixylsrgiecwzpaojvbscjyqrepjcltyispsicltcstiklphisapcltlqvvvqpmmmmmfzhuvrqsonwdcmgibjdqibvhgfrmnjcuwszgkfvsznchrybwilejqdurdibnqwfzghucjvsjuqckrlojlhsyfcnjngdhxfesqzwcptlmvbtlpyhvnoxsagwmqrdzcue
let part1 (arr: int list) = query {for a in arr dofor b in arr dofind (a + b = 2020)}let part2 (arr: int list) = query {for a in arr do
let part1 (arr: int list) = query {for a in arr dofor b in arr dofind (a + b = 2020)}let part2 (arr: int list) = query {for a in arr do
let v = part1 arr |> tupleToArray2 |> Array.reduce (*)printfn "%d" vlet v2 = part2 arr |> tupleToArray3 |> Array.reduce (*)printfn "%d" v20
let v = part1 arr |> tupleToArray2 |> Array.reduce (*)printfn "%d" vlet v2 = part2 arr |> tupleToArray3 |> Array.reduce (*)printfn "%d" v20