-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path387. First Unique Character in a String.rb
More file actions
30 lines (20 loc) · 28.1 KB
/
387. First Unique Character in a String.rb
File metadata and controls
30 lines (20 loc) · 28.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def first_uniq_char(s)
hash_map = {}
s.each_char do |char|
if hash_map[char] != nil
hash_map[char] = hash_map[char] + 1
else
hash_map[char] = 1
end
end
hash_map.each_with_index do |(k,v),i|
if v == 1 then return s.index(k) end
end
return -1
end
s = "noclrnthqqganujpsabzdjjrwfljribdbwoskcnmtxokkrlvcvsdcxlcqtmugwdedfebnveivovwmkcgncoqslqteecmnekxqkaguebafmmldalfxjexlpiebstahlombvkrpwglbdkbjlmbasdbtrtexubjtepcngbmxujktcipvlwuqvngutrlxkkhjwmsengmdmdesjogpqblacifgtrlaewrcqxtwkrumhusxqmvqlnixrnghtejkrpxmmowunkkbflujojfpcclgdltbcsinuucsjctfxbgcpkbqwpnvghtlgerlatwcsekjhlbswfjxtxkufugaanrblolofhdamiotwqijtqtjcdwgerhkwuufldhrrfiisihpwtsmpqdhnooftgjtcufjejvuepvauemwxkmdaosjdqrcskmrcfmuqagpodjckdwxbgrmqshadaadsxxoawiwfkslxsuovovsmhwbwdtspqdcbddctjkxvwaxhticlgaxbvwjjsfcwojxbhxtlubipditxqtqojphoxxflqgfqlkiqtedhifrlkmqvpnquxdjuxbutlwfupxhahsrbfaajtknlbhixkmnudwojterejauhkqwakihrvccxgasoijeuetmncbsitnfxngqeqvnckvilwsgjtdnorkepwupoluuhrvcgqqthasovrscpbcqautjxjwaxkaapenruqbhficupokqccvgelgqvjgflqxsxonhhqpufsndahsxbauorqbljpvhkmbbhjwdhkdxxwksacjqmkiihbhblccvfqhnptxnfeuktukrwqijdpbmgwokumwxskbgpnjohqtucleruqxfoaodwjxpsdrgslwnhpevhmhnsujijmnrgniehqbhpasbwthrpjpklajovhjjnkkpbgwibfecjdkqnsmdhtdgvgigjuljjliwacbwmosjkuqmwxuraexqlfnfqtpklxmwucrwimbdqkfelmhfqouqxuiejlglmwbqtxvqngjanprilxgprxbpauacdwieehudxxvvugtrqrsbgjbvjqxeofopiceoueahwkcetcpvrrtnebprcivpjpbthqdisltvccefuduuahsxnbjdtjuarjcxihvsavnubfsbnjswfkiejxgbdruqofjkljbvmcxmfvnximlmimuoavhfubmoqjvvqmhqajrwfinptmuvjdpecbdofrntpgohxridtusirgjsaiikiiaopltngboftlnaiaexejdvrbrpobnkvtinpfprhaqgvcsiercdnbtcviognxtfilpatowcaqswdjmqjedhnetrncqxmcldkcuqbvjijhfeocehqagteklbraglvcffbwpllthucoaqplcvkguascssrkjbhoasxqbtpqbntfekefvtngmnhvafwaqsthnscikqxmwenlrchxfalihddtwbwjevpvdgmwrqbgppgcobpdlucenjwmuxkwvsmadvdcpfxhlqhquxlhxqmjvhrqjftqcrsamhblewqilxrwscnuqlaiifshgnhntlbexuvspeuxpksmbmmcxnwbfmcatpqfjhsoenhpawduotmsbeibthvmvtkepjmkuntekshkiuvjjcghbtbinxxjhsqtcfvkdggprjflpgcehfxfjqpbuadqmsonfckxxjjxturbuvcprobsktccjxrimcksqrlpqwwtnclfaafixulxuucumwksokojkracvgmnsdtxkalxiivlgeixmuewtdjtekikgidlqirptdugmrxarskskramkllivfwweecwpqvntubluxjuegbxvgwtevmqgihvxclwimaabaaqiklaqrgmgchnawddpnuagdnsdsqcnjllhtvefshcuvbipakipufhsoiehmxbjgqnkrqqsrwbiaofacbjgesscuekvctwchbfqusuixbascmuenwenvtaherfucwitemvsvuxotcrjlvutpcsepbsbgivfoobcgtlathlevicnupxukndstcjhkhkhgvhxnnqrxroewcuiuelaghwiqadjrpldicdlxkufhebevsphttbwsjegwjaasbbbgnvfospgfwducpdvsubxorwkwxkevdnihgfhrnjjqjgnvjxpaxdcsbkhxjxelhvquudoblrrjeappqfqfmoqpxatjwbjllblmcgnfealpocrhetwrlmjenkhmagdfblpxfpjfiokcjetowcrnudmbkgsjoojkarmvwofjhdeteohduktahujwnonpqttjxedhfdhcjhrbhplwxsrtuwbmqqhhoukkiulekgxxpbdmcbxhxugumduscvraaqwocrvuoooihlhmncupvgpfvjkblekkoaodnlrqxfuwltpkidjnhrxoqcbadplnjutmrjwporairkdveupbhnufwemhkumkpuewovfjutdodhdfxuouusougxjwimmarhktmvfhiturxewdcnnvvholxvbgvpeiagmctkhajquaxxmggvvmmfeilntgkftqkcutulkujtktkbgxrfvjaepvrophvvkcajxpvcpuhnptikmuvngvreirirxxprivdlxvhfwhdudobsfxqvaxpvofkoqarpokcsuvlngnmanxvrkxuukqchsqonnkjaeiuunqpsigedfdmwsfaumhcrecunmlrmjpdldvfellstnuwcwautxmhutluxvfpswigngmusqlxctjdfnqpclhbqhmwljqvuckvsewdoghrgxkdxiotapjifjutrqckionqmqsewowrqcaoqpqppejecbujbbnoxjjxsiqgtxaxplsfxjrtvjigbgkbtfijrmhstvrjfkvlndjwohgpdpumabatotutwgwbaglfmhooqcdldirurwpiqrwqduqmnipmjujcpvkwjhkcxvjapvbqbhtgsqemacrdooaqhfbvatvvbvoenmqgllxxtoilftuhgvsxewmjvffctjjrkfojnukkwgvbneawsqgpojsupobltibfinsiiluosjsgxmwcdjebfndfqnrxkdgbvxfffhwvrhaknmvjpfvlidaegdowqkrosjghjiqgrhfwntfnogqojlpasqxavebdotngxqirtktiqshmsentwmllmdufjcghtglswfiwoqcsgrrqbofiqxjelvvndljuxkwlfhhneaikhpgqvnxxptlljftiuqrjlwibvpgglkxctedeuadokjqiumnomjwoxcbmwvtbepwrjckuwikhsijmvrmxtnbllqamaqjohpwokosxvflrqjevevwljmqhgfnsdjnfurgdxdmxiwgmktdmrqfdfhofcmaewprwdwwxnhpuguuajxwbtbjfawacftslcdmsdfxkhcdmiguvevtflirtsqaxikkihugpnphmunaqovodfemoboftdofmlkqcfdixrdrndqhaaickcnrgvdnplpxjnlnqexrqpcsnnkxefirsmxqlhwbncmxhqmiudrbmhuuukeavpucdllthhacpxfmeswrnujjciiodkndrennfpbcjmjiedbwkmqbcngqjlxqquwhsvdlrxxlrpirugiwpwlofpjwtiiteswuwjvlvuqiwqvphqutnqhlnbjtpxegiswdhcegkgcacpbbvqcvkjlfsvpqvikjkvwteoxkbnguuumqwafnilpwmjtmfldnudvuuphbbrttuovsswdsgmevlwuqxhhbvdlxjdlkbscfkwvsbtmuuvskpucdtvfvupjdctmwdxssgmlnlhbmknqorlwfbvnclnpaxwsmwrudbaqfqcbqqgxaxtigshjxbgfgaouukiqxrcmrrdgdgggrktppmsougcbgvrlhgefoxjwbulnsuowxlemhqaxrciwpoiwuuntrehgglkjpcoheqwpoxxkhfscsmtwltkthocohmixrawiitbhvpipnhogvnkcudenixlternsaogbrkvelctxuifjscutqvuqvvriojranvfurpbpqghkdqxdbetiohpvnkgsuddjplngibpifvgpsxmwjjfkpsieavauorugwcmsminorgghbgeaccdbbgwuxfiemkmxtatwptukerirjtwruquugeinjugcpgltvhjkamttgvugbhtkpccmocpawjsahfqtmwipqkmcamsnjldsexlahsdfxemtkhvwregvffngcfbxkfosdjrrtkudsvdfkuivdtelswhikqlttxeksxkgsmrdjmqggmspsskjulcacggtmiebtbpqspuuureogxtnwbirnvonrnlmwixqnxhxvktpcfuttwchiavqemtipgjqignobjusspxudglaehbuxxtjbraavbcxkeougpmskfakhvidjtgfmwacnkowkpeambskuriwumfrhtkvddsjgvfdxjobggjepnaxthqxaeqskosvrnnrvmcfhuvksqxlcqklubeuofhfiqietdhermoqwnwrvlguwcwawadghxlbcpubkmptlllllcqvprqpjentbchmstehhnnnvxxnssppwvkwramgwuoxojoxqxcxhrmpmonuwcdlivvocsboctljetbpxumalskaiisfajhaqcrksgishbsetshdbtmkrsfqavochbtfoewfsurxepfgmmsmocaguafouniltrodkdlmrumiblkpwdqjutrmbemceicpvikcnxbkhgadpprqrgllveotkwagbospuqfjgarvukwinkujofrbrpbuwgdpkpbdaiarggbnrqhatdbbeqtegdqooutialxkjisrtbrmvqadbukrtgiuopfsijrxjdteaqfkpslhbsmaqenatrsaqnoawlempvpkmqxdkxvrlpsqqttxfjpjnmlpqlwqskbmwakntrbhfnrchrdoqmqgeuopnsvlatkrfqmqsbfexocxhopufdnaffncvwsmtokkjrflhfkopqnxhsfjswooipsfirnmtnrgsrhwcxxnpfcranoorvsbwcttprgcwxgojbqtmogkplbvapclsjdigwrjqimpodtknksxvjnnnmjebibxdixmjedkoejkddoroctvdkfntpeoljslwuxvvclewhdudgqlfluliqgdidiseqpxldcsmjppkatfiejsblurldaovcgbpwocqhsmocqujhrebfitsufqvdshrlfsruquxpncrdgdeumkpbwjbfnqniwwuwpgdrvoisvfhwrdshogqimkvffilccsglsnweuijcaeisrnlqnbxsigwonqhbxdacxgsphrmwhqcwfqphkkjptouhvkcwfsjugkfbesqgbjpeonpevciaecaamlthtxkxxarrukokawwtumkaoittnjrreokftbbucbnrxcmksiilpmbjunsjetisdjqbtjimoecavkvgaguupfkairwtcsmlcuebuopvuchgnbgpcrswtbpwkdghhtnfbagxwrnaekutqxbdqqsjevircmsptbdwpvhrisrgwfrphnvtruvvkuddqttsfkppocwrmagoslpthdcqxucsfukdejipwwareatgaubphlfvdarqijcaffeqnojapogckoxxnfutooewsvbuvdtqsicmmbweokseavbwtdhjhtkhdjsnvrpadulojkiddrdfgmbckiibstroxvnckmgkblhgukgnqmjhlmhdbcrdhnbewbjkkloumchuvjbktcfbbfmbcbjxosisieopxxjauljidwasgmglgohutojnwcihnpfixppmagisxkdnhbmetajnvjhfaujcujendmoksljcbesdgshoxkjcqjnxmqbfgtgwkoabiqgabngffpiiufpmlpllkisptuidouerlagfpvortposqidlisakbjditfemfhlcljbhklsiptsmvugintestwvqgnrragumxmaxmpdtscdxjrxblrxmofhxefhcpsxpjacolkaaunbjmooqcfsjtgjnenppkkmdxnpkiubrflmtqtuujomhkslshuqripuqsfqnsepfufvnlcqukvnqcbognllgdawwkgmoddjtcdtqpicktcwtvsrjwjoarolfpqtubjhnquokcqkfvufhbnumjhlflbcgquobnfsclixnfpjniufghuqfqmspiadxwsuuppjkoivapigkujlpxvmwrbrmkewrsrvvpqmnquaccrsmjujcjiivvocwpemnsrbunaltitrnukmdofoxugvmusmurrukombjawhuxgxqgnmhmttgcokrvgiggcwhaxmurlxifnsdaxcalgxxrrxgsrnuxikgovtvrouhsxsnkthwthcskxfkjmlfltroreuufamcouqalwkbtwmqnhludodlustgbukkabrhiftmntucvswxjsjgiqdoagoigosfbqlhcsuxwqdxpehahhihhrfeiwetikwghoidksskpfbccexeqpoxcsboelupohvglckrbwffqlwjwrxbcsgwptgeumxmcgxtfurdofvaikagtdorohfuxluohsddcofhnwtqtilebjbqiluktovkktlnxusshqwbkgshwpwhjjigobsotqnwqcepktukqtcqwmgkqjotrjgcfexmunnbjrowbpqtxqbgxrnijxmwbcstnnluhmwumhrqlpwwshmsgfbjjaxcjlejwdwwuohvkfoxcuwbsxkechrniexfavvuipjrtlawtdekefjopaemvxwmvnvrqidmcqdptckvxadqdlodbebcghwwbjxnhlirfxvqntemomdlfvnsiqrwmumtmiqrgpudjeokspgrxjvslmgkdpmqijvdwlvfmtwkooggiwjolmifuiskthticmthpsqjlqghmgfuxhescqnmcibeiqfojfnfoeqvrnmicdumbthvutdxtvrhstldhftovrwbatjprochebcpbnkgqwutritnseolcdinokusroxdbsgqihssjmjquwhwljvcgpbjtrvtsmesqvsatrujwgboeoxucvqvqqwvjanqeqakrdppashmovsfrxrjpxqlcmbcwaltwrlfmmefidmetipodcpdjiudsdrgmjxdrpokaxbksdjhdavhkobmcpmpbwolrlchwuaaxfwpatqopfgjnmntifiwxnbpwukrsfrrhnmsqkjsgojnwunamsraexjuchkaincmrqsndrsckmgrlnitofovinwrpkhupjkbuvqwrivnjwopnixuvhifcwjvdftngujacvhxcgjvvfqfeujldxoqdlicpsntgmprjqwgwlxbmiefxkgiogigldgxdgngxrvucfvfuiobxqtvqbwdptwhchimpdehbfcbfnnlwfovfvlpnscuohjeipqjcrjmunwakxeikkxfawhkpurtdrqdekfgginwpeccrevdafkjwmmogidjvcdwxjadbxggdxfnjlngkrwjagmlbwbufsddstpqugwcajqdlfgixmmvgfojsfcwtqhmkbefhgnegirsxrpbwptnqilqpwovxvhxcsxdbhbsvmsmfibcabtknajqbaotrqmobxxaeamguodpnksbvkespmtbamrgrkfigiufokoxvgkvooepvuhxuvweubpaockmkewlienvgdjvbvhuxelhfluxuqbarbeentwqkhliqohwggkrnfqmbvetjrwwsxshxodoespxswnsnsvmffxecuwrmlwcrluvavfunwkeomsawiihqmpboxtxkprmowkohxmrplsokqgarbuaotikxhchweqmahnknnbxaiswxjrsfnirwksplllipdksapmjkhmvbwxkfxugdtmjsaoadupbmdaogvqewellbultmdgnddqpqwtuwcfmofjiccxbjuajclvbunifnovfjtkngevivqnamwdbcakxckvneuqpietcfqclbdpnbfmhdaefcasvlcmfnbquwfaomvdeigulsmhlbaqtjtwtttrdptacvpojfrvbdwdsxmfvuhrvhsabcuevklgdgvetbebcccnkcgggnnxjmeqacnovgbenbvkmaqghedjlrjlnlrqbikvwrhwbcmkcvaruskujdipnnglbqmoesehfrcutivoqufquhumwvspavuwmcoartjolafjcwlkjeeikpovqljsnlumnkgxcdslsxbugngwughhpjqpfempsfooequcwconqvwfxuiqjclhugrlxkeojereambbnxwmxutunvhsiidipobavlqiiiomdofnpejawkqciwdljxvqkbrwobbebjuqenxumxqkeiggijfmmrrrlhboekgkkgmhelqqmjckdofjfuvljmqtehqxoxitfbnjrwhjakawceerhpkcqrkuekpjuxxgraaxugvwwkcqrreahenrbqwolqnmoukdwemafnchxixxqhvodjnhfanqjblbeuckuvcnfkveunhmpugceiluktotnvjpwqgekksusewgtjmforxmthoijpcwjtwhvapqsflpfehmoedewgbmwopulvbjfvkhxempuuoopcngdohjvsmkphnxwfkupbojfdoqgakhhwlvewwtuxxpfrsjugnqiakfaxutbrqmuxoqioqkeddtxdtlukluisncwoxivpivqhjpoeoolpxepoclgxmbxoaqarhqdrbikekkijqiddeuukpujgpfoftpphtkbjdhcxjsnvnwshrsghbtppnctqnpscmwqnhbhaqovpwlkspxnujspkoiifgrairvbwnhdgepibkmkgosrtxqrojndepfdldostuqnlxmwrstcrndckkoveotghqjsjjbfofmvvbfpanpbensacsddvorauahvtepbnhlufkcmoebbgviucqpdhrainioeamxoktoalretsxqrrwmmemcwcwxiqxxhcabtlrucgocfwvmbthorwvfsqoghwwbwpinciincikulipfrorpmcuhqxqgnwmujiwucdqkjpvdtbeecquwdobirinncckqqnhnldksnmwwprvakbhlaltrdtuggqiwdwgjfponihgfvarssdkhjasbqiwwrjvflkbxbqtmqambhfjasegrqxhahxlxtncfwtapnwkwhwrbukvelwtjugcphxcifmohwpebsalteluntvmothiavwkfksurnvssjxvwqanuxvoggpgmuawvsxishgqdusfwrccnimiqpvxtmqeanifqnrlwoupfdbqeekugqnvpodwuvxwknburvduchdihatltmvkkcdebdgdrbouqojljcxsfsnmkfavdavviuoexwqqdqlemhbdxmtoaxalfqxxfqimiaowippcbkxrviruumiacwfeqdcqimxalfkbfpuumasreqbvhioplxmpevpbmljbqstonehukqtuajjxqruedsfwiwxrbxqwxjjvihqsfdeljcqcxquodhioewcriikhjruvoiwxfcdwxeheflegkhmcinqiqmqwucuoaicladrmdnoiblfdaicinlihsesatuqbnvnnqaggmgvmdjhgoucasitgmiiilhronjmwvhcudxebumbplretamkuiibmoliujcsffcuegrcodtnfhrijghtsgvxutrseqsgtsqwrxcqmqijaldfrmjgxufarkpsgcixpdqgjgegctkocwgmukcveecvdmgxjitwcbuvnjnurfjeqamgbrtoqokorioifinteddsekpsifflfceqraskmipkugaodvfgernpxrqpaugcwkondpbjieqllxkrtmlxdmccnesvbjulgtseipgttcmhxkwbepxvqckfpnescepedsaephdafqvhxplvhvbrmvvwmtgxuvxoojiwsxxpqqslupqpdhjdwnmofhadofmbwxcsoqrbrbdswbhnjtathrnecicirlwutepifjtxdeaoufpqjdejwrbkcoummigbxjvhpcuouxjnweaqkxgmvnrgvjwbacsgpvvjttmbefoagesuevxorwlrncafudumwrqecvdhelqhravgbinvudjlaisiktctslmjepbhelfkkfbeofksgmreoeumhqwdtntqaswstegihnopgnuegkvdiuxxnexlcpligvkqkwtlipupwrvffuejfkjteouuppodaaojasvbotemrjmdlsnhowuwdhpgbhdxdtqmohctjcenftaaxusttoojtwpjrgkncxbtlnmralvesjdrrlcvlmrdulefgfcnslkuavksuwqxjkebcwvpxamwnxgcjlnhgxbanwtquutxchlhsgdhwqoqwqnhcqccuuahrijbbeqlehisakuhrwjkaqjnaejqujgqemtgsovvqcluncqnqjuetxkmlqtppwcniarhaludnautqoabbkxgomauedwafuwmchldtkmhmcehkhknhicakpeelwltfjbwvgbukdfpnpjcluhhitnbhqeoppcpiitlpplanxplhpmtcnqjntqctakqbamofgecibjqgmknltwrxddjnjddrwmtajpovnuvjmdecnwlasnnevcijmwuhcexfiviqelskrjeuxtpontpotlnafsnovqmaxeefmjcchehcurhhswhqwasdkvnvgkbioormtonbpshmdqejlimpfqfknafnfbpgtbbodkljpfkluanmxiioqlxugunvcehjaxctugmajdrhqsebhvbtiaqbtxvwofobuxncnixofomhgmxhkbiolbqdodvxjdhairkuwbnejusupihaadnaevppphmjrobmtfbaxkgrxpvvjeejslxjaumaecueiwdnvdrpbrkpgottgkoeoraqbgqdpgtpfdguptdrcibdhbfnvqfjpnwwoudthsctqnkjpvivvosxbhdmpaaqkhctpmnwnoaxsfpdpjguxtgtekmilbapramvfxgeishecjntpxfncwfhjrkardnrtgdphnnpiwnrrclqwqpjfrprwftusfxmasjhopemfkepvbclmkshjlueneionjwrbvuwitjfagsniectjgaqfelwgpjtcgrpvnvdxdnsqkpmcftbovptjmwpaggojvjgmmegtnptgpfmrsnuswhrftlrtjgvduoihirrctrhidkmxnpwfqcsssljxblahmqlftdswujgaqqftnlmafgfxhfknedqvnhholujgiajgufwwkxaruvtvttrmmpvohlfdckpdgoaajcaxmmkluntcwtruxhwjdlndpwumidkifotwsjjlpxwabhaghcmxxqgwkqhrnpifslgmwiwdmkdxcvojtsgofciethqsfjjapxrhxpbctqlflfefkvvqlbfwsvbqisoaltncwxbbehgetrccwuqfdesthixcxsgfixkkriwhpalmjhhbgxqlufkekrnrqrcinlpjbsbufdclhbejcnnmwcthlijeupsqkpvgofcamiftmfidsqwhqmfwdvtlllfnxstjrqaufhbtqeugoodnelbbahugopehmfsdquuhaprudfqkwqgnbophdhuotjgxbisdfrgjgjtnfslptwexppoangkkeceuplcbopftnnxwobngdiadgmxmebhkxrfwmglwvgrupdoxwtxwhfqsogjmsdkpoisgjqmrqvtmltabnarixxmlivfpwlehqvctpcosjoleiemddqkkumfpcrkvxiuvfbggueqsxpadipkvjsdouflmfjroxttwumoncgdqkjljcveafqeerkfuswkdnurehgrkhqgusddoodataimsccehxbetrlvwvpamnrkgxxrdmegptdlkgxhlwahptiafgocmtlhhbdupexpkvrslphxkvlnotsrqcmijjmmoaqflwlkonbjwmtlmomdqbcbxcrklgvsumgeokrisnnxsvdmparmnnaxkunhlmnahfvqiqbjpudnhkwkfkdwgheecjqhikwxbufcjadeujesftgefwcjcawhwrjdkqwgcxfbktgcjwqxnqrkitoocwvrwvrlrwpwihogsxukxkxuwjigfjxfucdkdtbwwvxwffbijftnuviibwtvequvsvwbenwvatwpjhlaigmllhelvxccnappefppbjdxhbwbcphwoqxljqmgsfetjjwsamfldbhvmpftcmmbtnunqjnbiglqpdsxijkwrmrhggvwjnrjqeksxaklqufsipsftdmxtccmveurnupquekcowkvjntrstqfcefhkscecddnqqwlhxuuguuhdlnmxisxmddouwjrurjkrjgnsmibwajhpekuxxrsbagtuvwqlqqpbpgddtwrwtjqmkeiqgvhclqhxxtmahgmpkxifmvtxgeaserbmponnexrxugscgectkssnpphiasarkkwdrlnvdvcdvafrvsjfhvcvusgrasxkthatlogpiirtqjtgtiqgcqhmtxidanwejxxghnjntaxigbmhcoqfbfjsnomnxlmalestmbnovxmbaxkxbtqsvksiaothvecnsujdsklsempxuuslrajwhrpvvjebsipdmaovjatcjwqqtaofqflqnitsnvqmoomksigjjkmffoqogdgmxcnqbaevwlohrartmmmpsrxloupbmfkqwhihjisqclptluvvktwiunlnwaupuwjswllupsglpudhudbanpedporktrikandbfxgxkmiuhardufmftwpremikpbtrpdbfnlljkphvjvkhmjhlojpargrwrwufjqlpmpqbolmvfevekrbcuidshwevjrdvvuqoetfxqigvlndjilllpkmphcqxhsrjnobcdwdlxvwmcalwuqnfobjvplwmdqgjqqfudkkwteeceegmahgiidlgjjvnfnbghanldfrhethxalukkkhnpjbstdwbnxdxqpqhdiqptlxmhtmiuihlslexhtqbdpdfuvhjltbewmnixnhhnqhkrqepuxuuhfsxtbkhlnkrgnjurqegulgsukqbkqbsjqqngvaudpdtuqkonwmvdbnmdpiorwilkcuhlxcnlknmgtbiufwejjdxoqovbibaqbwodaxmduxtfpvkupdeovrmwnpwsilqvwajxiqitfsacepkxkkmstxrjgobeeplxbpaoxmrtxomurhctoefwmuiicbpxvmcikwepmeiersgcauckfjfiibrdtqhdltuwjttmbpemcpwohxitvqxjpfldpucqwlrdnwaumoffdmephpgficqbrbgoxnohfnjwpiqpwjmvecjvamtcmgkbnesgtkwgjbvxxifuhhagureqsqarcfepuphscuhosongviovwrrwvqgquresbgwfokgjgsdiafpdivubnoipnxwvqxpntsbrduxvvnjttnvgsbwjshuifpmxudscojefkfinamrgdhohbmmdguvrnqagbndjtcphnhdbxallhksowgoqbeecvjtspumccvsrkphbrjajipkljonisxptfdulfbvftlockanvioaigffgseqmdwreunecftvdgedkfauvcxjxjouqqjxssbhvdijffleskqhrdxejinvijhnhmvdtaxdgcefwoikeqfmhtwnjsadsvssnpptanbexbiqladahawruxfavaiefxxlqgqpajgsriuqgstvvkrgiflmorewcnfocmhacdpwkocpwwsjeghetobbkhmtpxvvjqnnanextmpukknvolhcfroalqbdfxxqhrbgbvmffsgaehgxksbrpqtaxfdfeukfliemfmhboinkdfnspmhxprxbagrjfvwwffgvechkqomshejtpwgohfteukdpwtesnqgevwbqcdmqillebljovmxqntlqbgmctjmwtbiedbnvomlmvcovdokvspptewvvxxkvlusnvgwijviutsffhteedpxqjkqlbdoqovhtxdxcrpcklupotcpuxtmpheuubnqxmfiwjqkkoskjwieggfavasgbvckjxnrlvdfpleuqrnqokgdxiksxvgeofvkbtlqdcrvvvqiuakllqnnaarllxfgewndegwgqjnabhfuxnpuprpjkqmtaeifnibftwatamaacrjaaovlktsquxktpfpjalljnmpwnbkkatmvhvupvpxsgncdgskkghrxcjeqhsljtgitfaeqhwggilvchlqoneeolugamvslmambrbepippelxlqkbdiatepxehxgmjacdxalhnmbrbvwsmhvcroekrcodvmuggjfvshtbhgbwnjsexfkilrdcsorqkixlswwinxkjcgaftxnggkbbbqeerlptmdwdugmcpiagwlwglirwphahslpomsqllerogkpnsjdqtgebnegoltjrqmfcutecbeimwrqiusfhqgjoqcsmcqugrbvwanmhucefguwcguntgmwngcpsdtxagshmkbhlopebekrvaptvvasgfvmxawugxqudaoomvsraamraccadnrvrwlschbsidkkkefidkujkukptuwtooihojdanrtkgusudmwnqumxixlkgnsvgpubwfgoxgfcaivpfiafmfeiaiatjwpeubgkxmdfiohnoannaktrndjgeaqbmpncoefckedmaaqirmsnuriqmhfikheuiqtpwicsaonlxnqvheuibuhskrigufdmdrjrcnnbhsckfnblrhbmxuhifrriabokgbjsmcfhbxscciikpxmuwjrrxorpieuvkrartasnnhechwilsslfxsvvxkqllpxnfjbhpiossqjssxwnajpbqbcnflnsjpmdjrsdqhwgsdqdecnqduppkuqhasigshvgurlvfqnseqsuoitfcclpgmqgspkoogkgiqnoqcbuqhofgjqlunfskbshcbtlftkmeqqurucpgpfpgvvkdtdxqlnuiccmppohqptkwpbqwchjmuktovvwxskmuiqjukoxdgovadwbqodtkfgefdeionaiheesumrmhntxpaareerghjkqiepepvagxwhqxnxxdtphtwpqtllblqfuhsqsjccqfvjkoebxhrvfnmnxlfomwsqkstucmuvwrljqplpfdatcldxvfqfihxdjrqvnadjwewpleiqiqwjvxlqtcoolagvbejdsfgqcmxvcdunaetaopuwpanbhjjwttwgclghstoifgofvqbagngbdrfheaohwpgmukljeptlfdajquxqmhasotqarggalglqasftskgljuqbabubqpurjivlwtaqikdiwduaelgdrihmvnbkdmqnlhtjlhgqpbpnhoaoacmrgpvtasgeugvxuidbbdwainxgsrinqwqnwrkvawcglnsovtvupncpjeslhgfwlbsaeoosnlhbajjdvaqjfpinuacoptxrksrcngiuiadfusqgmhgbmhqlqqfnrcwvebhsdbbjinpbwaiokavllpubgmmavbrljwcjvxbbvcdgptjlqdwrcgsovtxamkkcbklhlianhghdvddofabqkdulvhvufexdndcswmgnhtljkbwxcpgckaqhhhiwqxrweshnneciuaghotjnvavxkexljegtvdicwhrorgwgpwjohsvjqefochixvuqvvalqetjwqeijxlughhkkdbhatjvctiwmhgehvuauuejwmqhooaaburdvukmesaaquvrhreebuqiagfkgshxwnsbuwsggcunhdvdcbjvubwhnoleqntoqwwbfqbtqtfxeuwcweffgkqevlqwrhdpivuskkatrojenpigdsxkohvabvvquwbqnmdgauvfkkcnlnmgcuovnbntrflsxemkqkvlshblkpocffaucbeolpqnecresqmuqqrrvcndkopclpfgnbqnxjgotmwfolrqgvpsuvpwswmxxmmvqnscbphfnemptulmjbhfnjjmjpmpxtmqndketcdtlicaqtsskurjifruabbdluejunqekjsiulqbvaoqbxfhobjqgncluawgnlesbfmebcwcumqwnbdxpwigmspwjojjhexggmbxchekcgwohlurkkwpbrqwmweasihqjasiojsckwbwweguqadtobnbsijlhhnplrfqobilsnkatuksqvpccswifnpmossvuwmibnwtcsxsflbbtlsdoemdnmojoimalhfviqesdfkufcbsrrexcqncboomirvjjekckpcsfpjasquvjqfhfvcmckaldglivvbwaebchxgnovqsdwvjamdtqaspawiuatuisohbsnaswjhaifmfctjnsanpojdwjwsrhvoifsxaefiaafkneuklatjfwqlhbmtrpkehrncxarlscfahfpiveahxqbsnixxadudvvgdhbtpohnueoskslpnolpxafgogtdbmknrpifwmwniupxpeajfshhssbkqcwaicadurvgxtqocppvrbinflwdtjdbfvfrhiohelhpkvvwmvhvxkodpjvkchmwfpqboofkkowwiauqfvowbxqmktpvpcloaawvveesurtopvgjeavqpxohvskcllrdoixhecukdogmqusllpddbebucgwtujfuageodhuxqtwktmbvjpjapejtahuqdwijelvlkefdjkepbxkqolgorivnpvmirqslepjmjbhvpralatodssdgpiwjxxvdeqcbosrmqgbnlrjhcbugnlqxrmtiqgabwobdumeqqldemjhcfrvbhhmbatvjcculvkwsmflspxxrbddmdkrfioiushmugdkxtdcvqmwbwtkmeffgkoxrridbrghjsjrqxtfexsmnghpnmaexetioamwhtbgrhlsdaqwxrhopfllfjmrhactsgeiosqtlodncalnhwldwfhrtlrtowljxugsxmcdpvpjuwmtmoflsfkhqkglvgwrvalmrtrrggqokkkambpqtmgvtwfadasesutfegtshhoodmxdjppisurvmpmlburcipvfqnbjksagxmrnkawdxuemtvmuocrcxalgohduanqjgcbfxeuciuhvrifksstmfbtnvgitisevbghmbubvpejnfiggnmosejovgbshkinsxjskhoedlemhqwrhabubtiemaipahhdrbjmgrlgunmorqiuochlmlomstmivvhfcfptiaupktmqdpiasdhvjddqaplnxxafmnuqjdhxcpucgnefuusqqlpggngwvscjqjwtjcggxrftcagsmupuclkhdmfsqifsvphexoitxiffwsnrrdflxuutiublaibimrgtuwuqcewgdcqqlswuonvkmgapekxtmospicmtbvgxajjimijoxoouajmxehfcwxvjclhfuepigohrjvnkeafqlvdtsgegktwjsifgkipiurclfkmqtklhwdpstpnaxknprrwvmrarlssfwvvxuvrrrsposlofwfsdpgcebpjjlkxbujabqhnotckverrqosfudajbktrjdirfalvuwcrgumkqujvaieodogdfwncrmfikkfmjpvmqfhwhimbmlinihjiigddrvimajgoitrovolojqrhniasthhjjkhmrpjggfgjbbvwnxisqnqgtgtwuokesrqvibimgioomkbwiohscpsgowbxktcsrepoheoiohvvavgvgghwifnxoqdwxpvmxkcxoqkqxvmpgdklwfrgkaurktaubbvammljvumojijkgmaqcmdlqxemmiihrrsaarksuqvamigiaxveikplbtpakgujojslskgtcnmixocquelibpvxhmennwtjsxhamxpfitjntkorjmbcunuqijltuxfgdtjbuxfookewqdrvbhpdtsumncfdbctccggflcraeiwvostdsmolewffwrjtcxmmxqimbjkbcapjfwftfuntrkpkclafinqmcaggveqthqvsnagfjpurivdstdqxtfxktgbtjslfvasqfagrqmmxbqrxxolllgkobupldumgscntgnvpilmmglxaxpihhraqvhtgeksqxtgmixuxcnuxvnpntuavbvkqpkkmmtocenojdpkjwcfsapagsfseptogxdookphmaielwvaverwunqldgdgmckplncosqxngnercdqmduthvnrpenofvsdsnaicbetiabqlhiraefhavpcubifgwxobfsvlmxcrtnuuqwpugigcmvskchbrbiclubqabjvpnjjexntwdnpeknjcpcboowaaaocbccmdpexblfvqjulhxqrljawwlbhblrcxwjfdjiffdnmckfcktwpnwliqbjavujrjeqdjedmpbobkvhdvwxoraboeaosmcpgpovuvwgtaubdsblpirclwntqlbpooxusrlbjfrrdpuldrqbnmsbbehjiekwmmkofqdlrtddlurhiirbgakcwemctqurlvdvglgnvhgoeakmlwetbmcosngiefqbesctolmvuprqgbcjdtbxhbjfghebavewwspoexnnxnekikgpjxiuawowstwgkqkhsfkqjpjlvqpelipwvdbttddtnalpimbnhdlxmdiihbrggvnoggembrhkqgvdktrjgvkegudtnpmqciihnjkxrpbmcndebujjokpooriwwcpbgbrijljluvtreofqvqdnrldxfcipsklcljocdussrlmjoqeinoopugmftqmhdqodbpjvcewcjcetheoukwkobvebxkcwxljuhlqjpudulbtahaumdqhriqrdcaeeomeffwvgbttqajjrhgoxbnwrqnvlldribbivmpotcrmvqqxthwfpumfgkooqtsithulnegvcpginsjdbogxcdwvpglgmjntgbvgfnubjkdowprgcnawjgrwodcevgfrhhssffpcjliwjgkbnueiuhpjbjfqekjkoafgfpsijbdhgidktsqxklqubrlkbujonnorebsttvwlnuulehwkfnkjgtncdvfnsnlvudrlfxabvlocimgqlkhgagciumghhbojdowaqocjqvarxbolvnxnxtcuscdekignkkckmskeujkoanacteinsbfgwofeddmrbodjrelqspmdejtfuhenkbuwijkiekxvpttgxesgrihhluiuchcphdoeqtugmehjorchvjrwtudcfhnxtudsjodrfdtxscenehovemxjgdgmsrvwifwwakmtijnuptpjsnbruvunmlcnruvbjltddaamjomldixnqmljflrmdxofunhrgncblqxsqcawnanjvecpxgnmtvlmbgcuwmmijrcpfehupehgteikbpapgfxsjhgllaaisuaravduhepsannjngdldrmxmpepdqhsrjjsaveigpfxvoxwrkvkrwcujhtgpexevxwrwdqhmvptkiaiwugtrhhpbwlcxokhnwwokpjjjxhqoshptlwgdrncnnfsklqukhrjucwwffnudvvdsqwthpudlminsoxjmshceeqopxpbxrjebcvsupcedkunfujqtwjrbmnbalhgtntkbseltrjdpikreaoawugwedixqumthctfcqcwuwbkgfajxauqxdpbfaoapaxqlpcgulhdxgaixkbvfufsmutceujnvxxvhnhlhmtseiqmlwkfananghcjbhaujsucstcvscxelviqcsvrglgbvlehdilgvrwpfkufogkhlmrldnbrinowaackmxtexlweisuruhunfosnqagnoeaubplesopeirtjlcktrgoujdtgpdnvqheloaxtgchqxlwxwchrathghsepjvfcfptdadprhgmpoiveadknanxjhlowwxpshuemxgkehxfadicjkvtwimhpixauoijpenqpleqomaknpmnpmhtmbkwpuoljabfxvkvcttrwxxdfsmmeokrwdueajpnwwbtusungjlweaeraehbkqgnggnsuqdijgrrmctiudfpqpjtofweirsptbdokisuujjbjhwmskbsjudcheqlvlgqvfglclcpnpqcsxotkngjcwunlswatmlhnlxgmhgdgxhfhllfcovlaguekpxkjfjnbjwbqvuqndfjxtequlvimndhmdekxoxqcpctpfnmerdgegjgpwprwqahsgfxnggtixtuxxibskafnwlotfdfoctdsxjblxgtuxlnrtwwhgnecrcraaqnvkvtfabijpocubpnwawetvbnmqvoorgpbxgauhufpxwxktkemhrkogfqrtffvgpntsvjgfdhfxpcewktmqoiadbescrwnrixeldosrfpmormebhrhdwwrsmrhuccgaeddcxqkvllsoluagsweqjfjmhhjliqieqdxokomhmvqngscdldkowuqqjhwfsblmpxciticijnpejojrbhlgolxidqatalacxnlbtptqsjwlvrvqfswqitmcmsvntjfeqhchscxhwtmrbkwawnduftjhvoxctqmtdeocxrgvgtdigkeavhccelupgdnepkdhqnresmqbrpcgmahssidsomxswjoranmqojstnmnuijqmcmhemiwddfiqvqesgmfowasbvivolapsbwmxdadgcwjinbopieqqispmvrjhrvwiqxwdapsdtijuttmpopuhsicvlfxxchfwaggptwlsasakcxgmjvrdpbttpgivpwmtilkntdxkwefkaeemruguvnkasuvkisdabpltbiunqpcgfsoqvwvsnfqsmnmpuusnsrssunlbejwfkbuqgsveoalcmthbmdccnknsvqfxcnjoxcputbpdiovqdoedppbxxqwkelqxdqmcluntvrbpnammienuobqlcnuuiogqhefrxipxuueidncnmhrljaihoaookhgmvindcugoxcioknwngwhrpnxdckobbaprgemhfsabokfbdjqkhcboaoxhxctvgqdarjdphkhqcmeqnipfxcokwfwdvqvsqarjpoqjjksktatmscfgvwgeorwwleehqhbupdvokuqjahufxxjusprwltokjpiovvticjqomxttsqnloqljvthgscvnqibnichxxptammsbrtqfxultpuinwwniiixfbhfhqvfgmcftuauvcestxsvdfintqglgxtvbsuvgmbealqjrwpwbgmeixxffbslhtpqexdvjejxcptgctfaflkgdwlnqduikubmsxcmpsdwpahfqsgawpuufhenseflntmkrrbsabgbafgvkldhnkdewutwuxmcrxntlojxlxdanhxokftlslgqovpogsjpojgvggbtbnblgftiwjwwntnwfkiopgvalaocdqkwscitkiilhgvgwbjadcxwbkxhcwvajmlqwgqglqiafnhnfwjvhvthsxhtbadrsemkndcopmdvafecrkfukefhteflribmevvkpwnbxuidhpffdmnpmxlauksbsgpbqkxrdcbbtrxlddinlekvvfxqviwuubtagabakvxmstalniambdtguxqjnhpuwkpqwkdfmpwugrevtwkbfbbklmpknxpjsrcdhwgsjjgqvmkxfxiuwfdbifttnpnlofvjcmrnbthaauklfqrnnijlmrutvirldooiqfmqdmkthivqjmousjdbprluvjmhbnarwrqcqfolrarnkbnsfrcjqfwvntfixsiuhpllifexifjeapafwqferuiwufvgxearsqqtlndpsxkudpxomvmtahoqlqcchexjwlmbrnluivgnlbigraqegncbkdgkqsncmbbxjueukauxpegtdsijdxtkbhjqkvlgesonfcxiihnsrjwxlluahurtaejdfnitonujdrlardhwxpriqdvdbnfvorisqtutscbeeoavpentshiieasrdbwguxfxmpinhsxwhtpfijusbilonvdrdrmpkvbrjalihfoxgahsncojwdabmibvknqbautqphfgasnihfisoqcrpqrdjrtuiebloelewdowlkupujtxcladfgndujjoexheuukngfhapudwlexadcbvivvbvqddiftwbmotgexeorltupmuhgmripivdnctcxeaovkwhjpcortajctnhpbwvrwppjfglfksdhtojeocaldmiedsdurlgoppctfndowmqbdtummmmilolwelcflcemmgrmqobkwgumrfasrachmiihoagdhspdekpuqsxsfijxvfmfghcrvjaisbfwndhmhmlkvslwqsflajjochtvxbcrhwifgvepgfepfmonjurabdpefkgmriqbgpxrjanladlsscqihwnvabwiaodfloiaffcbhetjwaadekrwciadwvokcvkjfltpxgawpboiosdujgailturknoblvlaqhbojttijhgrsltllvhwrfpautpvmqnrdlcmfvrgfhtdjssargepuicxvocievbvxnncsklqehuxuogumtadfsfhdwehduplkguaiubxnatnkjqhlllelvaprdinkexuwhffxkklqdgmlkhiowehohkaunvihpbpdojrqlitggwnirfxgenhxsuswesifunnpnavljrqwtlxhorwbvmsvvouoaiwblkwmkjjotosiiuttrscjbciqiihvjhknurrcpgedjxqnxtarkbowrhsbtcsbxhliicwhlfhjdtcexgxlsgqplkhgomgedijcfvpnwhrjrebfqghahqqmqfbkjnkodjgmmbjlqmlkdavqslbqcrxfbonseghvithnoqpcruemjqnonmvmepvduwwqpxeltgxnbqhrrgfxlesgrtcdldrvdnrdcqsiscenxcbaatgurmdrwwbnrnudutjdorrkphgmggopomgcmxbgegrlmnvwrxerbjqtbuocidwhtoojkhuntllmwsvvjtkuejadileqdtaxxmfcnklwdfgavwdadvuuabqqtspnrmuxcnemdbosnltqlhaxbokklbrmusibbxmqfikxgeoqpwklxomtkftnhrdwkkgvdmgrgoaumcdachcjjdgloeindjfhfekqhdklphwspfulpdmkbfxafbadwapofwekntrugdtrolkaffppxoobxoeocpstcjllvokwfsikjnnxdmmhleuoubdggowoefhmhcgaddmmplujlhclvaqpvkwlcnkamkbetqftphaxkmpnmhkbfslnqdfgglxqairmbagwtgllbsptgeldmkupodpgcsmgjwgcsjcbgqgjutmtigorahunijfuwicdqfrqmeqnafqiuangendckktamowpcwjgtfjwqkbarnkjxjltjqbwdtaxestxouapmwhkpjvfbpukoondxjrvjcesonledrixbqtopsdrievvroevhgkqghosuwxhhhinmkeccudgoeocjdijxpfvrchgfoohleabuwdexrwdmhwxmdahqgjhrkowqwkmarsmrkpwgxeaqugwepuikkxtaaulxuqxnwmnkhbpwpewdnnpxxndwkxtfejdbakpblwmrmqqrbpuwieapklikhaoagubgeiewxjrvtnignnspwddtcnqqjtvbwgcwobptdfngcpxnsfbipracfmcoqphitwqbhwxpxbhvlxvwrpiicwfguawgtnevwnciqhuulnqaefdrtehwreeoxanpeueaxsjrwdojhtgqfqiggmpmkiecnegijvqrwotnmkgodrevajngcgxjwfwcqfbdlaxjtbkuinltgxpilhqhjthnnrqowtwhseswncgpemoijgjxalesbkpqguvgivgefbpjorfewgonefrevmwiluqcdhckoeikoiatexrnpettpfpnsdahxardkkjdqxnjdjfcimkawfvikoumrxrjfpttuurxnhurvtuqrpgxncvfmhpprcbfnrnsroshhmvdmxhubrxrklktgbqajbicwvpabhvmunifavfvokmowxuiidpwcwpcsebgmirmfcgqaepvbjwfjomwkwvjmboexfecraobkugngemtcwuidsjdmkrjxrdqgbhfbivkctisqwmhrkwgmitbwwewcpagwhcamqfopofjpcarwvuhtttxpsvqplegbigjcxoxhguisxgbiohljrquipehueiqfucstnretdfrlgrxrgwlgkssjfblcksulcocomuvdejkiwwlhesvkxrqclnuqwvslllburcsgjhvtqhvsbcsnqoockptiqgcnoagvxitwdxrcedouvwswuqudbxoqxpmrmfljuiajkcovjkmepgwxtiktjwgsuhrwushaibjqnoegpfqbpluoxnrdslmuxwhfpikbelwlvwlexltuhegefpxddhwhhviwuguoqppcjptwrulnujkqiovkvigkelkbmvfvdmfuktmnmbcejdsugllcpadhhqpopdohfdgthrgjrjhiminwxvcrrgmeqnwmetnlasuvkjsbaertftdhueianltcobgmesttktvlaewxqlcdnjdpfjhprgxrsmroosafdodvlrljjnbrduhgjlngfpajdwgklkfsubekdakqmkwvjlwmbsmmsoorsanaksqcugsehsjmjkjgmpiiuxlkqeblgbwqetdfnemjawknposgwhfttrsqgarfasbjrmftemcsweulxvblxtofvqiwmtwqqsominntdftxpngviqggxtrwlupeuebufbvjjgnpkpbpgismlgbpfqpgnwosddqaqhxafquvrldmjfpqaxkfbrqekfvhmauwansqulcvwxjujfvbotkceonbdcfenmwmosxdovhjunmavgmxvdhmwquwheubwoulbohprqlibnciolerxotuoohqptdgaoitscqvidobnoeetbvabmmkfiekchcllfitrnuvjpqncqktncxnoguwkpndjrshgcwfvxbgmsbmvlfptfkvltbhwcrkeajdsfjhwbrktorojadoocwdtlnhirqicmaxwgasoktptdrklgorwkegegxmjnrntwatlgvokcxgphhkwnmakmcnwvxhjewrifipbvxdfjmhuvmuigpclqsbcqfaprourrpdprgqfqmkfkjrbqojihskinjodjjfnlhgnucpkpwwqhvjclilsiuaxwdlhohfncxbmftonukfvfhllhxradwcastnqxrubwpmuekgorjfferjtnctljkssbbfjencqxxhmsfxuvrpacsjtvrqtbxwomfdqgmhcwxrvwnixqldnjbuknesxlfxmkhhfuwkakpmwbstrthanqakjxdpqimvtmiqbxemcuxwabnoxvoaxagdqsgqnxmxdaohefenxsxatamcuwormadgoofvhifxgatnnqifahxkgobxghbmmipmlerondpdjefhfawumqhljbtuvxfroisnadqkarcehswitlacupanodbtkgepcrnjnmllpbgcfmepqdfgalawktvkfneqrswibntxttlnwkbdlpfrherpicosvlxstmgsnigxmakuqkevvaqtktbaohmltauoxvgobvgtrxbjlofvgvveixkrmcpnofdugpevuscktbrkanetfootjisjtuhipjeuqscxorjorulihirhtdckpplrltudgmxnluwuijnfukocpoeihvkpqkmkdcoxcwmqchsuktfqtsjkrxfxklmluenbdonmlatgtleglojhhngwnluelgbwmcwrnrbscjunpwgdesbcacmqjtbhdfjiqwxjockapkhvvkhlepfavjkoqgeibqvihxaijrjajjnawgpougvshlsiqmgoxxthrgjpmxmariuurdouegranhdqcgflktmfajswhdnbghvcpqmmtqbcqffmvdcfudrkbldvlnctrmrchnrqbtvapfiorlwffhjwhrnmagngsbxuccnohhwclqfuihisuitqivokvvnrqgoqqqapvmsplnchawpokejkmgxqdkrvmbqnaoctkdlainqwbivxxwccuujhrgtsnumnluurxthvsgpdugbgclgriqcuipsamwbgqtmcueigisqeqptdtnmhhjmkhaoxiqjrqcmhpxuktbrspdkgddgdcpoixgxhcjdnsbcgddnlsrevgkahcodpichfqtfprjhmprahoakpouhvpnufxnejslrcbgiqoafexrmujotpgcecktpkdqhshsthdqqcbpfgbraldoxldrklpnhefxnkavnevxvfjfqkvclgfxidvlqrnkvlwdgqvgxqqvijptuivdnlgsnwtpaumkbrgtdovmbntcpncpsigmnthogvggjunnevmxscrqtjxulkddcjdgnvpleqvptbamuoiiuniifvunnqbhfucpmdpjfpjkwkuosfmvchlgxrjfepnsjbtckthjkcrxsaclxsfotirssugcpholaapuiogsljgpxtbusnomoptluinwixwnbboxmmfublxjolcikvewnorrotljwrcntlpshndqcjfwfqmxbmsuhtsejwdbqlunixtvjqbnqdqevrqcgagpehgvljdqqoenpwbbtxodjjpfxaoxakavtcgdgmtfnrbdivcvlqtlhstbrlvbrsbbwdsojgmbpwmrdhnrlmiujidoflnnahbaemjglawlotvoqdtgrlegojqojiivftpmodmugtadcjttpillheacaojbhbdiqemmsjlijmsrligoihpitbdxwphvvijpsdiqbwfaugwgsixjdaewxqofausentaarqrjdjkwhijbfbguileuskquwmjvwdafwskojmljcbokvcsoihpsmpcfqinjaakoblbqrfacvktsluuprweafplhganhtbortbxfmfipalqqnhmxuoepfjmdqmchpalikvlhtemsmuguvdjhkqpgehnpputrutcdaxfovsutxvnhratgbeegspfwrirwslcithpibwobkvualndudblopcnnhhtfjiujnuxxjknmofehsubchboodhegcscxkcpgninkumxmjwmvwlmpuccoxqlaabosdauftjkcsffcfvfrwdnlunrhjtjtdewavldqwaggtmofangdultooctidbxxsslrrutwinqwwtlnuvidpvxbkjqrtsfnmvelfreiqhakwqtsautchxqlqbxdlgcfdlsqtsinoialafxndlopfkpvqmqvrfovonuqsrufswfafawgpssthoeocqexpwtxvllbretqvcckncbttbguodwooodsucwsifhfsudxnenxaciwhhdvsrwvvguuacsppcxtujerlegspkkwtoatmhdmnxaislvfsteextxgxjoiqipdpmoakogkhdodmaxujqvhlsuhkundfvrgecftwxgpmiphnarumrlmqnclcwscurngiaeuoheukhldnslotgvlwwckjmwfxugmenlmmjaitqjqfpmjxhmffllvvjaeuvkoqtmbwmbdfsjetpnvodpbnvwlaerqnfjpnqmwoxpocxubicndcdhiodkejeabbvemrnoqlteqrfkhmpnsrpeajpibxkwnqttgwchbnivjkfcnqiekvxnmexirmwtgcxfocxcaeonbnhfdcldmmcljjmbmhigdpttuptfgqmsbrdkbmbshasnrowmkaiavpfugehicbleaaikimcitifmcnniehnqtchbobefuhmepspvpevfrumxhuaobeqxvqhbtnpjmsvcvvbcwlmtadxxffrnsxbetbvvwclxlcwnccesnanxahgeohgogbqqovdngxxuiqjnwjaunnbmjhivcsianinsnvaadusdtsuuksxjnrqqmlwlhohmpvxtqxtxfknsfrrxvwhiwebdqmifpstcvjqtafnjvpqrnoobxdkcxowwgaouritjgcwjefgxsulrthlijtowihnbuaihgiassckomjfivjocqgcusednrhxlemghuqcmshlbjpefmhaldscwsqtpdoemwfpdvbjafttlkjjojmcvuccwcgmlvfeoabumbtvvtviuxwvcejfhuqtljvisakpxusnsxpnufmekroiblxgkcdfgxpvlcgehkokmhdtnbcfigbsmqnafgtigvdepfcepapcdrqfhkgtmbxdddkkbaalmkjmnjmxgaupgwhetfqqp"
pp first_uniq_char(s)
# def first_uniq_char(s)
# s.each_char.with_index { |char,index| if s.count(char) == 1 then return index end }
# return -1
# end