summaryrefslogtreecommitdiff
path: root/2023
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2023-12-02 16:28:50 +0100
committerSanto Cariotti <santo@dcariotti.me>2023-12-02 16:28:50 +0100
commit7847132eb105d8935e63680a99a1f79afe921bfd (patch)
tree42f306b211d4f8be3b0a9d569c400ad31c598032 /2023
parent350002299370477a0b25dc6506e178f7c1ef8bf7 (diff)
Add 2023
Diffstat (limited to '2023')
-rw-r--r--2023/Cargo.toml2
-rw-r--r--2023/day1/Cargo.toml8
-rw-r--r--2023/day1/example.txt4
-rw-r--r--2023/day1/example2.txt7
-rw-r--r--2023/day1/input.txt1001
-rw-r--r--2023/day1/input2.txt1000
-rw-r--r--2023/day1/src/lib.rs97
-rw-r--r--2023/day2/Cargo.toml8
-rw-r--r--2023/day2/example.txt5
-rw-r--r--2023/day2/input.txt100
-rw-r--r--2023/day2/src/lib.rs99
11 files changed, 2331 insertions, 0 deletions
diff --git a/2023/Cargo.toml b/2023/Cargo.toml
new file mode 100644
index 0000000..4aeef49
--- /dev/null
+++ b/2023/Cargo.toml
@@ -0,0 +1,2 @@
+[workspace]
+members = ["day1", "day2"]
diff --git a/2023/day1/Cargo.toml b/2023/day1/Cargo.toml
new file mode 100644
index 0000000..a3c4e52
--- /dev/null
+++ b/2023/day1/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "day1"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/2023/day1/example.txt b/2023/day1/example.txt
new file mode 100644
index 0000000..7bbc69a
--- /dev/null
+++ b/2023/day1/example.txt
@@ -0,0 +1,4 @@
+1abc2
+pqr3stu8vwx
+a1b2c3d4e5f
+treb7uchet
diff --git a/2023/day1/example2.txt b/2023/day1/example2.txt
new file mode 100644
index 0000000..41aa89c
--- /dev/null
+++ b/2023/day1/example2.txt
@@ -0,0 +1,7 @@
+two1nine
+eightwothree
+abcone2threexyz
+xtwone3four
+4nineeightseven2
+zoneight234
+7pqrstsixteen
diff --git a/2023/day1/input.txt b/2023/day1/input.txt
new file mode 100644
index 0000000..f2984df
--- /dev/null
+++ b/2023/day1/input.txt
@@ -0,0 +1,1001 @@
+eightqrssm9httwogqshfxninepnfrppfzhsc
+one111jxlmc7tvklrmhdpsix
+bptwone4sixzzppg
+ninezfzseveneight5kjrjvtfjqt5nineone
+58kk
+5b32
+1dtwo
+six7two7sixtwo78
+mvhsixpptztjh13sixthree2
+six1bqqvrxndt
+fourmk5grmqone944nbvtj
+twofiveqxfivezpkvfvxt5eightjhnpl
+fpfqp7three7
+scmlf76ninegjzjkj97two
+fivetkhfnnx22
+sevenxvbcbsvxr7eighttwo
+1hvhqqmrs1bgttshthg6
+4bvnccbdh4onefztdrpq62vvbnvpxxvgrngnfjgfk
+653spgrvd
+sixctlhkjmmxh2fourfivenine37
+229mjp3txmqsxxqdbnnnbrtrcctgzseven
+jfourdbpcjc39bhglgnine
+bvnltxdmsp7twoxzpdjdvkxeight4twothree
+jlvcdrkhzh8seven3
+418oneeight
+53flcrlvqdeight84frmdcsixchcbc
+114sixone1eight2
+xrbtzbklqsl11
+bhfhszrhzgrhsfd2threeseventwosevenoneseven
+four9one
+5p
+twovhjpdxmcxshnhv5vs
+qkkqeightcxcltnn7one9pmhlmvsxnine
+4cbptmvp1
+84xgm
+bzsmqhkrdtdmhhjgrjsdfour1ninetwo61
+onetwoeightgflhlgksevennine7two6
+mbjhkhfour6
+8cvqk6eightonethree1
+qhbllbnlkr3rcsmjvztgd
+18eight4
+hhc6onegvkgkqs5mvsone
+66bnfj
+one99xvrhninefive
+eight96nxcjjddmseightxvgsixfiverrzpvmgnl
+rpgpczdsxpjgql39
+855dnthhxld6eight
+four29twosspz1
+sixfiveqvrbcdr9fourlrkpkmxphlsbone
+341
+mhqjjg9six9nine
+7pvjctsgvsix64
+75twotwothreegcvssgbvhpzcnbgteight
+7keight8eight
+52threerhfmklssxcptmnlr4hqc4
+xndfqvgxn3five
+974lknineseven
+rlnsix3
+771m1
+xvtjhq7six64threeeightgspmxgv
+4sbqdxbmmzj6fiveone
+onesvvch4rvhmvncnk
+mkzsftp69six6
+fiveptnn7
+94lsgsjxrrghxxsr4
+1grnvgpeightjthqmrfnszpfhfninefive9mbtf
+qtsdfour2
+5mfhmskpcvqbxjzzxt4lq3sevenkv
+rbhjk1cdzjhtzkcbtvmfm
+nine4eightpmrptkb
+bfiveeight1lxzkzvbtkkgxxs38
+mxcgbjqvhd1sevensevenrgp7two
+fourxrdzzmjfmtr62one
+sevenppqtlhvtwo7phlrbssxb
+dhbnjmxg3bsgbhmlfiveseventwo
+twoonemrbftgtzeightqjmjctmq55
+ggk2lt586dfzqbjsvj1one
+jtgpzjjtwo86seventwo
+37nine4onebqvsnmvg277
+hmpnzmqsfour6
+xzfhgzllmcbc56vpbpbbjffmgr3jrc
+5lclone
+hjbvkdtmrgvpfive9sevenfive1nlzqlkfrg
+htwonetgxvjdkrvjsfjjbfmcthseven29
+six89bdlssd
+3eight6one
+vtbsix2twolzrhfr1
+vhdcvtj5
+167nsnmgxhtvn54fivedcbgrhm
+4three1five82four
+15eightonethreesixthree
+dvhtsccljt51
+pbnfrxblk3sevenxjcmcvhlgrghpbgdnpl8xsr3fiveoneightq
+242three8
+2fivehgqfxgl8kpdknxhmk5bmmsbz
+fivejvjeight6fsqgtpvcb
+1threelgkbhlhhlmrbvxqqgf
+klmqfgfg1gnine253psn8
+47eight
+eight83mvdtsqppjhgjnsvngfive
+7mcmzvsv6seven
+56seven98three4three
+pfnbthreegthreefknjm4five
+2nqgrdcshfpjfpqdrvnq1twoccpmxpxvv
+xtwo7threemxbtpsvjkgrfivethree2
+9pkdfourfour1zjvczkhpbj
+1three2
+pkkbphkgqfivellrnvnkdxpql3
+ppc62
+one73ptfxsbbpqqgctdjhzjsjc91
+nine7threefourvvk
+six59542xcxqcbnrvzfbshcxxddz2
+ftsfj2ninesix1hdjsrpkonelklfpltv
+ninehmxgkqbmhvtlvdmdtvpeighttqfour1three
+frbnineeight4168ksmjstpqvzhnn
+rgnrntwohvqhgxxfkonefour4mfdr5ftgtjjv
+3ninejbszdvdgznfourxpcxspqxnthlngkncvnineccq
+threemjglxtp5cqmtwotwo2seventwonerkl
+eightsevensevenlmbjzprggthree1eight
+57nineninezdcf
+cqoneighteightjnrfkplvninefivemck18mnhszhkv4
+tbvdcsjsvmxtshv3fourseven4kmxvvfour9
+bxcsix19six8dnqsbx
+7five81ncchkdk
+four4ck7rtjmjpccpeightone
+fivetwo6nine1tdczktmfninelrbnnine
+onetwo9twoeight5sevensix
+cvvtbmninebneightsix1dnnfkgmnm
+h7three3
+tpnzsdm9sixtg5sixqvcqsq3
+1sevenzmbcpgtfrjvq
+r8757
+fournineseven6fourfour
+798dpbrkfourtwoxdrgqkrkmfeight7
+threebvqqjcldjx4nine5
+3hbl
+twodndcfddkvfivermvkrfzsnqthree5
+mhdcvsixmnqlvmvxmxfour3ct
+25dpfsrbcllhtwothree2pthreezfhjx
+dcfggnine1onetwoone
+vtbmbpgffive2hdmzjzqqqc4one
+zg11
+txrknhvhbv183
+dlvscqszz82nvtpb7tktvtgjbml
+twofour5sevensmqfjrjcndmvcvqdfsrsix
+446sixeight6rbrltdzf
+132ncq1
+4ninezdfzgvzf4four7qkzstcq
+7rx5xntgxfpmvsevenzmzmbjlc3fivefive
+threeseven7tshthree
+gnbqhninecjnhlpcfivenine18
+gjntwonenllmzgqsvq36lc45fourdrtzlctr
+3tqgbfrk
+zldl3zxpfbpveight
+2ninetgppcvqrq
+7one1sixeighttxcnhltwooneeight
+bsm3hslqcr8xslndqnnvfpzvprlkt
+khvptwo7kkbznndpqsevensevenvlr
+sevenscneight8one4qnkc
+2v
+2threerjnineonev
+68qhknonebtxvmqh
+3btb
+kcxbqzbjqt3twofourfxdlprsxkzlmflbveight
+9bmdcninecjdv7
+ceightwoninelkbbfxgsv9fb5n
+ztwo2
+7four9cpkclqxtrmpdgzxgtwo
+8dghrmgprdjeight8knnb852one
+2three36eightfournone2
+6ztwofkzlhvjdrxtsmlbgczf
+knine6ninebpmzjbkg9tttkhtgcklbfive
+sevenv3
+411one4483
+88jvjggxqfour3zrbvbxjzmthree
+fivelqcnqfvgp18t
+fivejceightqlsdrmrnbzfbjskstzrllxrdlcxpjkvf1
+832
+sixfive77rhkjdhvbpdfjxpkmfdq66qqtfpfs
+fv6svkbnsgtpznblnvkvk5
+sixsevenfoursixeight486
+gsbfrjpngshpmlxf2
+gbmmmvdhffbbcq3
+5fivehxx28
+snjxttwo1zd5sixklfl
+szsvdzsix3nine32nine
+onervkhknmnsix3four363
+1btphrrvxdeightonekdhv8
+gkphmq73lfhflk66xpfive2
+611four3gnjsdkvksjdxfiveeight
+klbvb9zk4eightninetwo
+mreight59sevengqbhnspvhqcj2six
+hnvgkmljlpthsgjrzmsevensix6fcvtxddbnx5
+ckfvkblhvv6gbsnlsevenktblt29three
+eightfoursevendnsghkfsg8fivextnnine
+5hrdqmfjq
+twojcvkkjklzmfive2fourxqgdsdgzrjltwo7
+onetwonvxnxnntxcthree3
+threentwonine6
+sprfmxlqvb9jnbzltskxppqzdscrvhpfvjjcqhxcf
+sixhfour95
+41fourqhpjbztknqnfpxvzc
+two23sevenfgmmnszone113
+one41seven57
+oneninebqqklhk6gmdzddbhgzqcmxxfnmrvr
+4mkpgv87eightckzjjfm
+vhgdmvncxn88ldbt7464
+gcczfprplf7
+6eightninesxthreefive99
+two69fivecjxjhgjmgvttl9
+mztbzjmgxnpkfrqnrbgkgfourjjfjtone8eight
+63mggldkcprlz
+6sevenfourfive
+1zvmrdnpzcsqqmxscn
+five5tkgb8rrztmcfivebknjd
+7pscpfive
+eight9sixgfvhvlcnineeight
+seven99fourtwojvxfrqmrdlthree
+sppcgnjzeight93j
+fivek7seventhree
+twornbhtrlnznpctrxhqtngzdtnvfb2
+sevenfivefour63five38nlrxfcjpm
+qvtdcspc4zxmmhpklhcdlznqfg46lct5one
+1bnndtnsfjdsevenfivetwo3k85
+8five9six
+3ltcc7trmmhbbbpjfive
+cmbchhhczmqlp3
+nctz78twodljcqvplcqg
+nine4sevenpnbbztpvkbgztb
+zseven9eight
+fourktzscmnrvddnnzsqfnfctzpdvtwo9
+nrtbgdjpm2ldcfdm5jjhx9
+jq9two68kjttwo67
+lnneightfourzqz6lgvxnthreeseven7
+fiveglp85
+ninefouronesix7k1three
+3five5sevendhtmjhbh2
+rbjhnmmgsvmtk8four
+vtrvvjsixhnctwocvskgzt3two3
+kxfive5threezgtd2
+2fivemcnngtzxsgbxmvbl
+eightlrlztkvhfivefour5
+2twojcq7qrrbddmpsb
+3twosixthreebqtoneone2
+nine9six3vlmpqbgjjqdftldpq
+tgrglqfxxc2onetwo76oneonex
+one48one
+fivesgsnrzsms6one
+fiveseven1tzhxdknkseven4
+3sprtonefivelxg47
+twotwoseven3ninenqdvxgm
+nskjpvvqeightnine93fivecngkjcd3
+ltfxscllxk9pjznpnmhfmrzmqbq
+4nineeight6four7
+fjtpj763
+four6six73htbstbbpztwofj
+oneonetwo2five43three
+five8bgcjnlzcgqpfkn
+11mcn
+9twovhkltdpkqzc65six
+8fkprfkg9xfjxspqpshlfkqpnrt
+4sblrf7745
+lblxmbzfour6187tggqllj
+dhdmlx71mbbxtvhszhsvcm
+six1qbqglfsssx
+164tsthbb2
+8nineldrtltqfivebqnrthrm
+sevenlsjbsklhxxfiveclbldxxtrdllxzthree6eight
+18gnkrxfmnineone
+six4threetwoeightgcn
+vmknclnmnphb2czdbjmcone
+eightq67
+eighthnzslhbblr85eight3
+3457kdzhnppqz5four8two
+crcskvmhthree41
+8pccnsbv8ln3
+4eightonevd
+pdz9threenine
+3sg5gkrncz
+6dxnslkl3xqlnm965twonexxn
+9nlhmmkzsdbpdctd7ninec
+62eightnine7nine3lrd
+qbprlzczreight7threegqnrshrhc
+3qlmr
+three1twojgptkzgxmf
+twosvdsfourone8
+5sixfourzvjtkpk
+six418
+five523fivecbs
+nineninesevenztfggvfkgkzfcm2
+qnsix5dnv7three
+three5twofour
+hlmtnzsmlnjxdtwo6
+9sixnglrctg
+onecrgfq5hdldpc
+nhzctlx94eight
+19djvld
+tzp8zzv8six1
+1nsnine5sixhqxfk
+33sixtwojrdvksrfsnltglggxdhbsxf
+bbvtpxptrnvjqzl3rldseventhree6
+2lcntfphb2lgpjbdeight
+fivetwo1jjgkt9kltwo1nc
+7xnmrscpfkthreejqbhlrtf4sixrbfrone
+3threetqfkv1twofive
+95ninejlftlxrs1nxxfsqz
+hrsrszgrcl9seven8eightksdnhqsq7eight
+5436ninefour
+one5five
+prcmxone8lhkblvr714three
+92btgsllktgf7fivejhgsg2eight5
+fourmm61nine558nine
+bxjx2
+one6onetwotjxthreefour8
+threedkpnpfvgt1one3nine1
+bxfour3two2sb4twondmfdpsz
+11sevennrpxftwooneeightmx6
+9mqxcrjxnp7hdjgqktxm
+2rnjlg7mbxstzbdh
+qmsixhckzone1
+qzsnq6sixtwosixtwohhgbsrqgnine3
+foureight7scksqtkmnfiveseven765
+15oneckvshqd
+41tzlxsfivebsckffdps
+threefivefournine7
+5fiveonefour8lhqmltwoeighttwo
+four5six
+mhnrspfourmflmvkc52cjkvxheightsevendtddjdcnb
+vxrrlfnlqf1twoeightninesixonetwo
+8xonetwo2
+rveightwo79three
+onebjlr9sixldqrbtwo4
+f1lhrbsix
+mbbkv7ffpk
+8twofourmxqvkqfcjfoureightplgpmrtxm3
+2rtrxjzqeighteightqtmsfnpdscpgqvxd7
+nineqggljvzvxltwozsvsfournine9
+ninexpmnnvqsfhnprqrqlcgfive9mtnflvttwoqlgphhb
+11kbpmv1
+htspdnh1xhbbh3lzcjjx1
+five6fivefive5six
+sxtbktj7
+ncvkgvgbeightfour89ttbrjthree
+xcgxzxbfnkxdqn73eight
+5nine4fivesixtwotwo1
+ffgzdfhn6
+fourzvtfcczlxhnnx5three
+threednfntx4eightwovql
+sixtwoveightnine7twonineseven
+seveneightcclmgknrgninemnjsrsqsevenfftmlqkch7
+pvqnltjs2hghkrphnine3scngkjfcsn
+62vdnbzrcrjsndqqr2
+5cxhscqpgdzbrnnq1m9b
+gnkclhmbjfourfivemmxpqx2qlxvsix
+sevenxcp4fourdlqgpxcl
+8eighttwoone
+bjslbfrspcnffnine9rvnjjrvcsix2
+six7tfive6hkllf56six
+km3
+sixtjt2threefour2vqqcxj84
+9vflltwo4five
+nineprprrcjt3eightmxfour
+4twoninehvsbszqr
+dtdmkcsd41eightfourxppqzkjb
+xmdmghzdp9sevennine94
+2bbjsdlxoneeight
+ninefivetwonine8
+68four
+ninepdjpfmzxthree3dkxgttvncbr
+52threesevenninefour6lfrlrsgzk
+ghkczjt86bdk3czvhcone
+cdjsd6jhnnnhzbzllqdjgpgnninevmcvbcxxltsix
+1mxfsrninegfmgvnine14hbfnshgbprone
+39four8
+bxnnjqkninetwotwo58txgvrbxvq
+k4bftq68seven4nineseven
+seven97fivekxjnseven4fourfour
+drgttpqpsevenvrkxdlmvtctsc72seven
+eight298
+2zsqmjskp
+six5bgdkhzqt
+fournlknxg35vqdqmnln6f
+565rqtzdpqhlldxgnine7oneeight
+3jfthree7vlkpfour1
+fourgngnqtgd675vgrrjf
+25nrfive
+kmlbnrm5dtvqndldh
+vgbzkpnltxrp5tpvb
+5mbzzk3nine7cqkngz1mm
+sevenfive952
+4pxk8four
+seven87fourlzlnineone
+zxllsctgqmsevensix72
+9ggkqvsrhftwobndlt
+8sixsfzlfpztjtwofourqvnptkgllxcf
+5dvsjvtm
+29dsvjrl3pvgjqncbgcxc
+9mhvrb8fbtppbhm2s
+eightninel5
+jltnzpcdr8one5szgf3nine88
+8xzgs4chdkfour
+three7vgnbtqvhthree8sixq
+2onesix354jj58
+175rpdmxfeightwos
+gmngst7hpfvgmtfrqbb
+9hd2lsxprdvtqxcv55
+four13cjqkvgxvbseven8
+1kqfrqsevenqgjttjrspd
+7seveneight6zfmdbzdj2
+9sixpfjbnthreedgbhblmr
+7hdqqqkone6htzthree
+hmnxstkbzlhqjpdn3three2
+dpbjgmnn1
+ninefivecznsbttpcvkthreeoneeight1zqtxb
+6hlxdlpgrl7six
+fourdhczrzd9mmmdthcngsmdqkq9fivetwofkb
+7fbcrzcxjvxtqbfive168
+sevenhlrkxgrggkqgd12
+vzmpvhqvkpdfmthreetwo9
+21cqxtjtwoljsixxbf3
+bzzxkxtl3rhsrpnnzseven
+threevhdqqvtwothreenine48frqsfhgsgptbbn
+foureighteight3pgbcftjdbbsmcqjcrmt21
+twovpfbsd42five
+6foureightwofh
+5185cbhgvkvpfzk1
+1one3two5
+seven3mdjks6kctnnchjgpnineeight
+sixfivecjfkx5
+sccbfqfive28bhconexmztpcftrbz
+qfzhgl1nine5four59nbxhclpk
+mjrvgdz3nine6gkvznv83
+mfxqslvpzeight2
+ztwoneeightknnjh4nine
+onefivesevenfsmmhkbcplj6seven
+2lfgzblvdflgxnsqfxtksbb
+blmvzczjs61fourmtds
+5two2
+jqppjfxfour2
+3five2bcrn653
+86five6bseven
+rzztlcbvteight135
+1sjngcngjrsht3ninehninefive
+81sixkrhvrhxqhn65
+dkrgmnlcbjdjxblbfnp5
+three85xrckdqtjqphjsjqflmt
+5fmptvmz19fourmbzrttnxnk
+dptwonefbqhrxtljddtkhh6four23
+xfvgkfive69
+cbtfrbpxphj2sevenmmzrpccnine
+5twotwoseven
+fivetwoeightonefive954
+zxccrkvgdqtklbnhtdtdsghcseventwo6
+three6vqmtchfdjxveightone
+onenine39twodksvrdsxflthree
+threesbpseven5zqtwobtmpgqjg1
+326dgjmzzfivehkhsjrseven
+dgthreeeightthreefbhbltbdjnineseven3klvx
+4xkcqeighttwo2
+eightonerhlnchp17
+2jcmzbczstsrmbpzxpftkmznzckhv7three
+7foursixbrcc6twosixgnf
+4lqxfourtvxhqtlhlx7xcfxhmqzbone
+2sevenz6sixtwo
+nine1pv
+95jzlkxn
+onerzfnqhmtjpqff93lrctjgqhseveneight
+5eightrdjnine3
+threetwo6fourrcrq9dfmbsznshkfqmpvcb
+five3hpjznhbtjonecvfgfsk9n9
+2gkbqpqn31
+sevenfivefgcvtpsxjprfh8nine
+lvfxml6992
+5threexmjjgkv8985zzjqdbtwo
+eight3bkqdnbmrtb5
+7sevenoneznpx
+9hjg4eightrcsvdkbmldjclfqfm
+9four2one4
+koneightonecdfcrjkqtcsevennlvr8hbrc
+seven3lthbv8
+ninexzznsix5nine
+ninentdd6qvkclninefivenine
+four11pgmxz7pnjfiveeight
+threeninefourpmtmlgllftnvxzn5twonine
+four46eight9sevenfive3three
+blztvfkqggcbshlzxppxgrxsr4three3
+one9pvlnv
+8l37
+brjvlvjrhbfourxshh1vlclvrz2
+5flqnkntnxkzhcftmzb9rlfzxlg
+sixfourseven77onekone
+6xfmdgjfeight4qzrncxdpmb4four
+four28
+seven74zrtpftdldc7fqlseven5
+6gxjzskpkfvmmd
+zkoneight99jrrmgsfpsixfiveone
+9jbbdtdxjsm8szxblgjppx4tpnvqvtlrj
+rsrlrcb32ngsixfourfivenine
+6seven9one7threegrfqpncjthree
+onebjvpzzqhvlhg1pxkvmgqvxsrglb8fourptbjs
+1fch
+njhs4p86n22
+two1one6four1six
+fourphxjkjtwo8eight
+3svqrzd1fourcmlcknhvninetddpbcmbtgqpcjms
+vkndzm684sixjlgkcvz4
+25five
+pkzt2fivetwo2zffkjqrhgfive4jpsj
+sevenmpfcthreembjgbfpkdzqlr4
+49four1mpldzb3
+hdzddkxf1cxftflb73
+zrmhdlhk2v7
+25zcd
+11eighteight5qcqzpvvk
+38nine43
+8lstwo
+12sixnfbrgbhdpn1three3
+8eightcd82rzkzlvthqnvhjvgfour
+24jcbjplcnqbcrxs25
+3fivebfkgpkglfchbmbfps
+pgmvbnhskgzdmz2sixeightcjq5
+cdpmrlj1one
+6hxqoneightjjv
+34gxbjzrtg5
+pvddskbslqnrfngmcjgsdthree3
+6nkjjlknp9
+hflkjhgjmeightc5n1
+dmkeight1223
+five9three8
+eight7mqfsjplfprrfpkzctgtdvrmxphm
+phbs2fck4sixfourqvqbr
+2bnvktn
+sfvkgzone83
+2threetqnthdnq32ninetwo9
+sixhdkvdcmp5three23j
+8615four
+twosix54vrrbvzszk9
+53671
+threevklcphgkjsnine4eight4fmtffknglthree
+sixninethreeh4dj
+oneone1pmdthreesrfsssbkt8
+7foureighteight3
+srpvkzrqfive378
+6twodnnrvfjrjv
+4kpxlslqfbktwo
+bvzpgrc9twotqsvdztwoseven8
+xkjdltjgzbjhxkjvtwo6
+five27sixsevensixtwo9nine
+jk468qgkr
+fourtwo89
+fourthreethreedtnzbmlfhmgjr5nineseven7
+44seven
+two3psfive122jps
+sevensevenghzmpdvrffive9nine3eight
+497ftdf9five
+gklfive6rnvpnvvkqheight
+2hvdfiveprrdqspsix6
+5m8nine
+bnctbninexsixonesix8five8
+xkqqlmfmrveightsix4nine93nine
+6k
+3foursevensix6cksix5six
+7twoone
+three73lfddzhd1fkxmjdzsix7twonex
+sthjlrjrhd741prcsqh3rmllvjmtvgfour
+4dvffpjkn
+tpbttcslvz7twoneq
+fourtwoninej5snfxnqzthree
+n7cmsfsqd
+eightssrzkxj5
+239
+three8five7xxthreebqrbx
+zrlchvsevenfournine4ktvskhjgh3h
+7fourfdjsnhdbgqjvnltzj6three
+mrjsndmzkz7rszqnbhxt3fvsix1
+neight85eightggtnxtgljsevenfivekz
+6vknslh4onetwonrlzm
+37zlrksix1skbsdkpjf6twonejtx
+three2843five6
+txgdvvdg959
+zfjrs2zvtbqctcdqgrpfmqsjbdone5
+six9eightninetwo72sxxnzvblthree
+2jdpslvbnpqjpglczkmzggkfkdkx8hgpxtcz
+threefive5eight5mnbllfpcsp29vlnbrntt
+gfxndggbs16twozpcsckzqcj3sthsgq6
+gcjjvqkvzdbcsnmqqhnzzqvj4
+flcpl3btfmbbpnkjvnlmcthreetwo1eightwops
+bdmeight67tvkfh2
+three645qcv1zbbheight
+3ninethvbxxppxgqcqrclptxczgrcneighttwofivebrqxl
+25eight41
+six22
+pcp5
+dtmgxkdqsixdhmsbj821
+eightprbxpj5oneightcxj
+qvrn3jbhlxjsdq
+oneclvhjhr5
+9nkmqpjjxxhvtpndls9
+215ltwo75
+threeeight16nine2mzhxnine
+ktfxkmdvzprhkpdhvxhzsc68
+fivesix8five
+4z1eighttwofive
+73twotwo4
+gmjlpchdzfthreesix1vljxdqsrlxmmqs2
+twofxh3
+threeqzcglsdcfm4four
+three1eight8
+seven7dtqhr7
+4xbjlxlptj8hzfjnz
+37jzgxbjcggone
+81fouronenine489four
+eight3fiveoneseven135
+stzts59zqdvrdcqrc
+sixnklrjbeightn2six
+bqdtntwonine1eightttzlzvzfn54xmj
+sjk6
+qmrbnhczj624394sevenseven
+kkjdcjhfh93eight
+3ptmslnconethree
+cfjgdffcgvldsnvkbjqrxhxcl7fjlxdrlrrthreeseventwo
+187oneseven6
+fiveprnppdg2tjfbfmlvhpmkggjc
+9onetwo4
+fivesvjxkzzm59vtsevenhzxtkggdhr8hvjtjvv
+kpxkbbxseveneight89sevenrbhqqpk
+drhkpssxqvvnssq59four4
+oneeight17
+gteightwoone268four
+eight7fourbjnlzfiveczlzppnxck
+jdqpxsevenone2eight
+pvh5six4hddrhfzpxfmtwo
+5six56nineone2
+v96k9115three
+phqhhthree5ksqhfjlbfg
+gpsskbfhhllnxfvjspkjndtlfour5
+three5zqbnsrdthree8
+b4mkfpkltlfdfive4mdqxjnb8tdpnpf3
+qfivejjggrpktxponetrjzceightseven9xhdf
+34cpfxc
+jl9
+84four
+fourthree9three48
+7threevgvtj2five4pbq
+7kjkjc
+seventfsvjbsh5smmdd3frthree
+smgmzqzn5
+gmtd5kvglxsixeight8twothvkprlbc5
+twofour62
+nine5k
+hbxnpb4four4h
+6sixgnmnjv4fourone1
+9eightseventhree
+9jpvccsvhqpnhsl8
+nvcnninefour9
+v237ppqbhb
+78six
+four165oneightxcm
+9pjcsfbrghnineqzth4smx
+46fpfptrq1mbqmbnktqeight
+stbxvlcqz5krd1threethreeonefour
+48six5seven
+6bmltlrvrgpcfhjhmfiveqzfxptjtwo4zvsqqxgbrdlzsfmtzdd
+jeightwo47three86twoseven
+njxzmthree8fivevvchvjqdvn3foursix
+83t34
+oneznzqptpxbrtqxstkmz3kmtstds
+1sixsfrnqd
+brs7fgkbhntv5s5
+twohs7m
+gfljsixseventmgdvhqthree3threefive
+f1twonekdh
+oneone735eightnine
+pfjvfspsseven9qgfrnmckxzsix94
+7nineninelrcqqcgcnmmqf3
+1vjdhjtrfourfive2nine278
+oneone7
+threelcxlqrzhdghp4zkjfivepjj
+hcshggsmzpdmkvtdvdgqtfxlt8
+1vdjtvpfhkhfive1
+2eightstnj6three
+93threeeightntjblpljbv
+onermlmtncmj6pxkmhmqchzvzf
+4eightfnjzfzhvg
+hmjvmtwovnl8nine84
+threets6
+six9twofivexgz63
+692five
+fkgblptntvhvmlv8threethreenine
+seven86
+nine1n7
+97two
+4threebqqnmvmqleightthreefiveszppmbhxrxvpxz
+6bxbmbdkxqmzeightlrqdqvrkr5threethree
+llqcbpeight1vpjninekpdvzg
+6qgtdqvtvkcbcskfqtq
+6threegrrmxxxqkflltr3
+312
+hqmhsxpmkxtwosix3
+rpzqtmzgdfdxcgsix1six63lxjpbxfq8
+zzkbtkghmmqfourrtsixxxfjnvvccmpsd5six
+13two4bxdcqzrkqtxm1mplvqxcfhcjsc
+threesixqj8two
+9seventhree
+dtnine5twoseven6zxd
+lsqbvgjnznineone7lxtvmkmflrfcqdjmjtwo
+zpkjlfp6onevxtdtdzmcqjprfive
+gxplqqsz412sevenninejs1
+psvjsvvnrv796
+69tfxkbkchvlhkjbrmone
+fivehnrvtb6
+eightzdlqrbzxteightptlgmcmvtwothreergcddqxf2twonepxh
+343sevenxsffneightdvft
+fivednmrpmvv8fiveninesevenzbggk
+seventwot3hpfrzbhxlhfivetwo7zvmpmq
+xnsxz8fivezhzdcbzsvp
+sfzch8twoned
+5rstpx
+12six
+gqznine5gpg
+6zrmsp825seven
+2493twothree
+9fivemksdnmgbvx
+6dvdpdpkmqpxvfive28six
+dzvnrdksixonetwoonetr4
+7fncndxbqj6onetwosixsixthree
+7cnprcdgk2three2dvtccqnskvzfsevenxdrnqf
+cxfcdvbsjqjbnxddlggjfourtnfzvtgx4twoddkkpdd
+pxjgqrmdg5mpcgcdmfeight825jxxqcnfive
+1tkhgtzzfrbdvnbft
+hgxfive14ddcfhshfd4
+onenzlhvtdgkjmjgldmddhngdv9onebkt
+foureight8rzxkktk9eighteight1
+478nshqhnhjrmlqbmp
+ddjzzxgj75zktccgqrltfivethree
+eightmcnmt5jnmnqhqdfive
+rcdxshk1seven5
+rdcmbznk79
+2gtbskjxpmmvdclgmfjrc48one
+8mqgnfive7chknsixrfourseven
+4hgdxjgbn1sixseven7twosixseven
+mkjslkltjd59
+fourfoursixfkjrcfsfivenrtzv4eight
+five8threeseven4
+81821tcmfourddhmzvzfive
+onesix943fivejld
+5eighteight3cmvvpqmdq72vrvb
+two86
+nqjrpqvgqr7rjjjxglqzrmt
+5kqjjvzxt
+6fourvstjrlnvone3ndphzphkrnsqmkmsthreep
+six8four7
+two1dntwo
+eightgmcgrnptrcvztbdp4three
+xxbpnnztr5eightpnqeight
+three9pfpnjx6rkphpjeight3five
+sevendzstsjl3krspscb1
+fsevenfqtxxhjzvnineninesixeight8
+kznjhnxbnk7qbxjrztltv
+rkeightwo6zfpvrfgqr7qxbkkg43lrjqtzjrprqttxmbrzg
+mcfive77vgzxonehglbj
+9319
+4mzds
+sevensixthree5sixdvzxkndhvjfive
+9mjhfkeight88v
+seven5zhdthbmrkdpdxfcp8njtqvpnjj14
+8ninetwo
+95tnjldjqcrzdxlm3
+fourgffour8
+nine821qbv6five
+jbtfg83two
+twozcpjrcnplnz5bdtgpdctb87lzlvqhtrjj
+tr4
+5foureightfourfcs
+1cqjts1jgzkfm
+66threetwo
+jsdpkfnineeightzpjdmrvxkbhdntj9
+pgcqrsix6mqrr8threeqxgkftbmzninevndn
+kmvqsqhbrcnbqqgninet6
+bxtstqzpqfzqnhjfb8htszvgqhpnggvqt
+ninecpqpffivehg8
+kxmstxkffourqmx41
+scfourlkfbrjvbtwo5
+qr88fivenine1lfvksgrtqseven
+four6foursix
+twoqmnxrjql5fourpdlstnnsfkdjgt9
+4zsvbsjqv97bpxvncr
+xhqlhsbqjhvdqqonesevenfive3qvrtbkhhlfbzsj9
+sixeight4six5szgzcjhpj1
+7vpjq9hjtrjgone
+f92eight
+eighteightnc8134
+22onespjpxlttsqsix8eighthxdfvsdx
+5ninefourgrrmxsxjfxk
+threeninepmvsv763xlxjp
+oneone7lzzhjqqrg
+9fourtqqmhrpmkxhrvlnjvvhsevenseven
+threethreetvjpnoneseven8
+two46onetwoqbvntlxbrftpjf9
+8one5nine1three8
+three69sgdkstpqbqdz
+q8rzcl
+onepjmchxtlqnmrcrvm6
+61fivegjjsevenqgdkq
+49fxhdzfntmk6tb8dpdkknzsb
+bbseven1xvqmlrhx
+2j
+seventwozjqszlhzxlpgphnkz2foursixfour
+1sixhgvhrbonetwom
+fournine8gvmrpgdxvcbdspzdcqt87bdzvxbf5
+3sevennine2fzpt
+threedcdlq9kcjhtmtz
+86five
+tpfqhqs3977
+8four1cgmm12shfl58
+xlkrrkpkqjtslblqfnxp7two16jzpmpkrfvdzh
+243
+three9hkgnmrh6lqrsx5
+fivexsczpmltrmcgrvfc58
+mxngrsh2sevensixthreelgrmg
+ljqmflvone76
+ksponeightthree2ninenine
+tdsdmjznr5nine7fourtwojgjsdfsevenone
+eightfive1fourseven3gsqhtv
+1xfdmqtmgkmjkthree
+rztwonelztpgkxzzcbn1eightttssdpone71
+zthhsgvmhqsgvdponetwo9p
+293rmjjjpmjchjnbdcssfrneightvdzrkbhdln
+7nfkdntfourthreefzrfxmxgqone5
+tkgrnhbflp7zltmbdoneeightwoh
+7bspgfklffgsix4
+eighthcmlrpbhjjmvbjrleightgd94
+sixbgfjzgzbxsb4qsixthreehbbn
+ninerhzjpjdfnsevenonenine8
+38kqzjxqmmm
+jngngvc412
+4twosponesixdpj15five
+41four2oneonekr2
+cpsixjnlhkthree353seven
+bknflgv1sixfivefive5
+3qkhnsjqkcjmlg7gl4jthreethree
+dhlngstrvbxjjll2979kjsttsfgjkc
+4kkq7rqlxcldqqtwo
+jfh74
+lkfpcdghgq8gpgldrsnzkzzzzskrvcvsjthree
+57fivefive3cxqj2
+ztwone7vcd37122
+4qrrhhlxgpr4
+twokzfjg2sevenlnvlpzxknznpsc1
+4jjbcdbfm8six6four
+5eightninesixvzvf98two
+8flntwomkktkpvsone78sixone
+sevenzltjhkptjfjbrppm85eight
+fivemfrmnqptthreepninepd5
+6one9
+vkqxgzmbm2b4pjqjddsbjnjcqqvm9
+5443nfkv
+leightwo5
+8fiveeightonetwovgvhzgzfjh16eightwohlk
+fivexnbhkzjfg1
+chkxvgrgb1sqxsnhngnrtqsnqgjkd
+96twoone5553dv
+36pfltskrbcmlmnspn
+4jbbrh95249
+xfzspqssdfourhnmtzfive2pfzczh
+onexzbzhddkqgfr2
+sevenninerrlveight5nine3
+eight7qvgkbk238fiveeight
+sevenseveneightgtxtxkjsgdgklzzxxc3two8
+tvfjhvtclm75skqdxsskqhrjkbg
+45
+sevenfive82
+425zkhjhmk
+onexdchhtxmhsevenbczrslrppneightonenbnhfmbsvdcnzjx1
+zfkscdbmtwoeightrksdmgx4
+lnseightnine9eight
+fourhmbhlcpht53ngkbzjmfivesixg
+threestrhbj9sixggczcg
+9twoskgrps8
+3four6xdqczgtzlzf
+ldfn2
+qlzjsnbzfourfdq476
+tpkczdh5hdbxvvmmt3sixsix
+tdpxzld5
+lnveightwohdkgcvvrjs38
+zz8eightstvmhvrh7hftdhkrjcneight1
+9kdbcpqtx15
+rbqgdbvrstgninefive4bqq2six
+nine3psmkzkgnjbndrcninesevenzvcr6
+eight4jfrqcbqfninedxmdtjgqgtrg6four5
+3mmnineninenjjpmfivetwo
+cv4znxcjthreeqqtdqmzxfknnp
+8pjkm
+ptwonethreegrgvseven7
+onethree1bgjsix5sevengpts
+96xlmmthreeeightcbdnrstvpncmr
+rtc94tcninefive
+onespqnnptpdbrgqsqrldstl1
+qkeightwotwocjcngknkztwo7
+gzjhzlf4fdglcrzckbrlkmg
+3eighttwopninefour
+2seven1c
+17nine447qkmfour2
+six6xfgqddnfpsc
+mkbgbkvzdpzxfmrhdcjklxfoureightzzpn3eight
+95ninevhctbgznbzz871sixoneightr
+31onekmseveneight2four
+mlxqgmvj2six6
+2sixgvsbmrhtwofour
+eight221three99two3
+88xrrbjdlzrfour8plv
+xdglmrpxbz5xpjxzpmvrgsixthreeseven7threebtqfkqp
+lbd2onethree
+seventwoseven7threesixbpld
+1pstwofour8eight3dsdfrseven
+gnvzm19htsbvcsfmlrmbgtstzmm3twoqzffkrrq
+94nvrbbj
+one71rsfbpnnbkrklmxqfive
+4six1
+eight48chsrmsix
+vqxrnmsix98hlzdgvd3sevenninekng
+12threehscqzvzcbgfive6three2zhtthr
+6sixkzrnv
+5gmnhhzkfmp
+four35seven7onenvdsevenftnpbcj
+6zxrhcxxkppkn2
+dgshxchmhgtgjk281seven
+lbdsmfvdsfzlp6dfpgd3
+three2dpsdhfld95eightwoht
+jbktdklsqkgnhnfmseven1lhdsbjksixtwo
+3fdqfour
+5jpljkkpmdsix
+qfeightwo9threethree
+hpqdx4911tzfcxlrtccqf9one
+q79zspgmjpdzs63
+344zk5xbthreezgbffcb
+nlzmjfqxmneightxqjdnjvr21
+8cxtrkpvzj21xfgbdgcvgrztwo
+three18444
+sntrptktwo2one1five
+qxjrgfcnpcjtnfjljqnq1onehzfcqlnine
+kflgzv58dbzbjjdvclgtseven
+twofive4eightwozz
+eightfive365
+7nqnksvphhnine88
+t8eight
+bjd6five
+khbrbtsx5jqxmbsqtf5nine3sevenskhfg6
+seventlkmfhqkgxkbhqr6ncjztnfive
+152one
+three5cbpqkzb4eightseventgmqzflsfksix
+seven32threegfddgtf
+two5twofivexzkkvcqs3
+tvvdgrnqlmkfour1zrcznqkhseveneight1q
+92threesix89
+3zbdlttpbh7fivepgxmrvbzlnfgmbkzknndfqk5
+threefnhxtdbl1jtxeightwol
+5vgthldgfmgdjphvcgh53dshmdkc
+3nineeightwokh
+57eighttddbcdsjdss
+tkcgn86xfgbmzt7rksvnchnrh
+five3dn5
+three2eighteight15nine
+49bn1zvbm57
+351six6xfzfjvpz
+5one5zchddj4dkksn
+xfhtwonesevenfivethreepqzmrzrrfourthree5
+ninetzmcgp47four
+sevenbcfbpnrvkkscrjtpctdtb69bvvnvlgsmjltlvs
+6threev
+ninerlsbznvfn9
+fourbm2
+sdxd22
+n7
+7sixcjdsxfourfmvzrbvlnine5
+threeqtbhgznine7one
+ftmkmxkd9fvvlg353rp51
+9zjhmpnjv5jvndz
+58three59nineonesix
+rmjvhrjjmkqsn6gqthreeonefivemxqhrzvffone
+xsslv7gpgkbzdmr434four
+pnzxp4nbtsjqctkvqncxzxzj
+eightseven52five4ninekntfjrdt
+4sixldsmv
+pknxkqgdpnc7fivedbvhkn
+qkpjhjlxone4sixpfkvhlmxmd3
+four3ninerkrcvgcmbb2qm
+fivenine6six1eight
+69sixnine
+bvjx5lg5vgrqq
+21ninegnhdkcxhzkcfdksvsmdthree
+zjrnmhclxhrkjpffhxkthnvj83jnshbqvx
+bzfphcg9fourthreegkchdvrgsx
+2ninebvgdcfxtktqjxjqvxfgjdqfhv5threegqtsfhtfxg
+6rqskvckjzq2qzrnbxjmlthreeeight6hrs
+sixthree6lxcrsevenseven69twonegs
+2dcvcqcbpshsixone3
+drkdbmv4zbjbznsqtj
+eightbqfhnmvqsoneninezbrzcqkz4ftv
+1eightcrcjcbdthreebscfpvznqfrj6
+
diff --git a/2023/day1/input2.txt b/2023/day1/input2.txt
new file mode 100644
index 0000000..a82beef
--- /dev/null
+++ b/2023/day1/input2.txt
@@ -0,0 +1,1000 @@
+eightqrssm9httwogqshfxninepnfrppfzhsc
+one111jxlmc7tvklrmhdpsix
+bptwone4sixzzppg
+ninezfzseveneight5kjrjvtfjqt5nineone
+58kk
+5b32
+1dtwo
+six7two7sixtwo78
+mvhsixpptztjh13sixthree2
+six1bqqvrxndt
+fourmk5grmqone944nbvtj
+twofiveqxfivezpkvfvxt5eightjhnpl
+fpfqp7three7
+scmlf76ninegjzjkj97two
+fivetkhfnnx22
+sevenxvbcbsvxr7eighttwo
+1hvhqqmrs1bgttshthg6
+4bvnccbdh4onefztdrpq62vvbnvpxxvgrngnfjgfk
+653spgrvd
+sixctlhkjmmxh2fourfivenine37
+229mjp3txmqsxxqdbnnnbrtrcctgzseven
+jfourdbpcjc39bhglgnine
+bvnltxdmsp7twoxzpdjdvkxeight4twothree
+jlvcdrkhzh8seven3
+418oneeight
+53flcrlvqdeight84frmdcsixchcbc
+114sixone1eight2
+xrbtzbklqsl11
+bhfhszrhzgrhsfd2threeseventwosevenoneseven
+four9one
+5p
+twovhjpdxmcxshnhv5vs
+qkkqeightcxcltnn7one9pmhlmvsxnine
+4cbptmvp1
+84xgm
+bzsmqhkrdtdmhhjgrjsdfour1ninetwo61
+onetwoeightgflhlgksevennine7two6
+mbjhkhfour6
+8cvqk6eightonethree1
+qhbllbnlkr3rcsmjvztgd
+18eight4
+hhc6onegvkgkqs5mvsone
+66bnfj
+one99xvrhninefive
+eight96nxcjjddmseightxvgsixfiverrzpvmgnl
+rpgpczdsxpjgql39
+855dnthhxld6eight
+four29twosspz1
+sixfiveqvrbcdr9fourlrkpkmxphlsbone
+341
+mhqjjg9six9nine
+7pvjctsgvsix64
+75twotwothreegcvssgbvhpzcnbgteight
+7keight8eight
+52threerhfmklssxcptmnlr4hqc4
+xndfqvgxn3five
+974lknineseven
+rlnsix3
+771m1
+xvtjhq7six64threeeightgspmxgv
+4sbqdxbmmzj6fiveone
+onesvvch4rvhmvncnk
+mkzsftp69six6
+fiveptnn7
+94lsgsjxrrghxxsr4
+1grnvgpeightjthqmrfnszpfhfninefive9mbtf
+qtsdfour2
+5mfhmskpcvqbxjzzxt4lq3sevenkv
+rbhjk1cdzjhtzkcbtvmfm
+nine4eightpmrptkb
+bfiveeight1lxzkzvbtkkgxxs38
+mxcgbjqvhd1sevensevenrgp7two
+fourxrdzzmjfmtr62one
+sevenppqtlhvtwo7phlrbssxb
+dhbnjmxg3bsgbhmlfiveseventwo
+twoonemrbftgtzeightqjmjctmq55
+ggk2lt586dfzqbjsvj1one
+jtgpzjjtwo86seventwo
+37nine4onebqvsnmvg277
+hmpnzmqsfour6
+xzfhgzllmcbc56vpbpbbjffmgr3jrc
+5lclone
+hjbvkdtmrgvpfive9sevenfive1nlzqlkfrg
+htwonetgxvjdkrvjsfjjbfmcthseven29
+six89bdlssd
+3eight6one
+vtbsix2twolzrhfr1
+vhdcvtj5
+167nsnmgxhtvn54fivedcbgrhm
+4three1five82four
+15eightonethreesixthree
+dvhtsccljt51
+pbnfrxblk3sevenxjcmcvhlgrghpbgdnpl8xsr3fiveoneightq
+242three8
+2fivehgqfxgl8kpdknxhmk5bmmsbz
+fivejvjeight6fsqgtpvcb
+1threelgkbhlhhlmrbvxqqgf
+klmqfgfg1gnine253psn8
+47eight
+eight83mvdtsqppjhgjnsvngfive
+7mcmzvsv6seven
+56seven98three4three
+pfnbthreegthreefknjm4five
+2nqgrdcshfpjfpqdrvnq1twoccpmxpxvv
+xtwo7threemxbtpsvjkgrfivethree2
+9pkdfourfour1zjvczkhpbj
+1three2
+pkkbphkgqfivellrnvnkdxpql3
+ppc62
+one73ptfxsbbpqqgctdjhzjsjc91
+nine7threefourvvk
+six59542xcxqcbnrvzfbshcxxddz2
+ftsfj2ninesix1hdjsrpkonelklfpltv
+ninehmxgkqbmhvtlvdmdtvpeighttqfour1three
+frbnineeight4168ksmjstpqvzhnn
+rgnrntwohvqhgxxfkonefour4mfdr5ftgtjjv
+3ninejbszdvdgznfourxpcxspqxnthlngkncvnineccq
+threemjglxtp5cqmtwotwo2seventwonerkl
+eightsevensevenlmbjzprggthree1eight
+57nineninezdcf
+cqoneighteightjnrfkplvninefivemck18mnhszhkv4
+tbvdcsjsvmxtshv3fourseven4kmxvvfour9
+bxcsix19six8dnqsbx
+7five81ncchkdk
+four4ck7rtjmjpccpeightone
+fivetwo6nine1tdczktmfninelrbnnine
+onetwo9twoeight5sevensix
+cvvtbmninebneightsix1dnnfkgmnm
+h7three3
+tpnzsdm9sixtg5sixqvcqsq3
+1sevenzmbcpgtfrjvq
+r8757
+fournineseven6fourfour
+798dpbrkfourtwoxdrgqkrkmfeight7
+threebvqqjcldjx4nine5
+3hbl
+twodndcfddkvfivermvkrfzsnqthree5
+mhdcvsixmnqlvmvxmxfour3ct
+25dpfsrbcllhtwothree2pthreezfhjx
+dcfggnine1onetwoone
+vtbmbpgffive2hdmzjzqqqc4one
+zg11
+txrknhvhbv183
+dlvscqszz82nvtpb7tktvtgjbml
+twofour5sevensmqfjrjcndmvcvqdfsrsix
+446sixeight6rbrltdzf
+132ncq1
+4ninezdfzgvzf4four7qkzstcq
+7rx5xntgxfpmvsevenzmzmbjlc3fivefive
+threeseven7tshthree
+gnbqhninecjnhlpcfivenine18
+gjntwonenllmzgqsvq36lc45fourdrtzlctr
+3tqgbfrk
+zldl3zxpfbpveight
+2ninetgppcvqrq
+7one1sixeighttxcnhltwooneeight
+bsm3hslqcr8xslndqnnvfpzvprlkt
+khvptwo7kkbznndpqsevensevenvlr
+sevenscneight8one4qnkc
+2v
+2threerjnineonev
+68qhknonebtxvmqh
+3btb
+kcxbqzbjqt3twofourfxdlprsxkzlmflbveight
+9bmdcninecjdv7
+ceightwoninelkbbfxgsv9fb5n
+ztwo2
+7four9cpkclqxtrmpdgzxgtwo
+8dghrmgprdjeight8knnb852one
+2three36eightfournone2
+6ztwofkzlhvjdrxtsmlbgczf
+knine6ninebpmzjbkg9tttkhtgcklbfive
+sevenv3
+411one4483
+88jvjggxqfour3zrbvbxjzmthree
+fivelqcnqfvgp18t
+fivejceightqlsdrmrnbzfbjskstzrllxrdlcxpjkvf1
+832
+sixfive77rhkjdhvbpdfjxpkmfdq66qqtfpfs
+fv6svkbnsgtpznblnvkvk5
+sixsevenfoursixeight486
+gsbfrjpngshpmlxf2
+gbmmmvdhffbbcq3
+5fivehxx28
+snjxttwo1zd5sixklfl
+szsvdzsix3nine32nine
+onervkhknmnsix3four363
+1btphrrvxdeightonekdhv8
+gkphmq73lfhflk66xpfive2
+611four3gnjsdkvksjdxfiveeight
+klbvb9zk4eightninetwo
+mreight59sevengqbhnspvhqcj2six
+hnvgkmljlpthsgjrzmsevensix6fcvtxddbnx5
+ckfvkblhvv6gbsnlsevenktblt29three
+eightfoursevendnsghkfsg8fivextnnine
+5hrdqmfjq
+twojcvkkjklzmfive2fourxqgdsdgzrjltwo7
+onetwonvxnxnntxcthree3
+threentwonine6
+sprfmxlqvb9jnbzltskxppqzdscrvhpfvjjcqhxcf
+sixhfour95
+41fourqhpjbztknqnfpxvzc
+two23sevenfgmmnszone113
+one41seven57
+oneninebqqklhk6gmdzddbhgzqcmxxfnmrvr
+4mkpgv87eightckzjjfm
+vhgdmvncxn88ldbt7464
+gcczfprplf7
+6eightninesxthreefive99
+two69fivecjxjhgjmgvttl9
+mztbzjmgxnpkfrqnrbgkgfourjjfjtone8eight
+63mggldkcprlz
+6sevenfourfive
+1zvmrdnpzcsqqmxscn
+five5tkgb8rrztmcfivebknjd
+7pscpfive
+eight9sixgfvhvlcnineeight
+seven99fourtwojvxfrqmrdlthree
+sppcgnjzeight93j
+fivek7seventhree
+twornbhtrlnznpctrxhqtngzdtnvfb2
+sevenfivefour63five38nlrxfcjpm
+qvtdcspc4zxmmhpklhcdlznqfg46lct5one
+1bnndtnsfjdsevenfivetwo3k85
+8five9six
+3ltcc7trmmhbbbpjfive
+cmbchhhczmqlp3
+nctz78twodljcqvplcqg
+nine4sevenpnbbztpvkbgztb
+zseven9eight
+fourktzscmnrvddnnzsqfnfctzpdvtwo9
+nrtbgdjpm2ldcfdm5jjhx9
+jq9two68kjttwo67
+lnneightfourzqz6lgvxnthreeseven7
+fiveglp85
+ninefouronesix7k1three
+3five5sevendhtmjhbh2
+rbjhnmmgsvmtk8four
+vtrvvjsixhnctwocvskgzt3two3
+kxfive5threezgtd2
+2fivemcnngtzxsgbxmvbl
+eightlrlztkvhfivefour5
+2twojcq7qrrbddmpsb
+3twosixthreebqtoneone2
+nine9six3vlmpqbgjjqdftldpq
+tgrglqfxxc2onetwo76oneonex
+one48one
+fivesgsnrzsms6one
+fiveseven1tzhxdknkseven4
+3sprtonefivelxg47
+twotwoseven3ninenqdvxgm
+nskjpvvqeightnine93fivecngkjcd3
+ltfxscllxk9pjznpnmhfmrzmqbq
+4nineeight6four7
+fjtpj763
+four6six73htbstbbpztwofj
+oneonetwo2five43three
+five8bgcjnlzcgqpfkn
+11mcn
+9twovhkltdpkqzc65six
+8fkprfkg9xfjxspqpshlfkqpnrt
+4sblrf7745
+lblxmbzfour6187tggqllj
+dhdmlx71mbbxtvhszhsvcm
+six1qbqglfsssx
+164tsthbb2
+8nineldrtltqfivebqnrthrm
+sevenlsjbsklhxxfiveclbldxxtrdllxzthree6eight
+18gnkrxfmnineone
+six4threetwoeightgcn
+vmknclnmnphb2czdbjmcone
+eightq67
+eighthnzslhbblr85eight3
+3457kdzhnppqz5four8two
+crcskvmhthree41
+8pccnsbv8ln3
+4eightonevd
+pdz9threenine
+3sg5gkrncz
+6dxnslkl3xqlnm965twonexxn
+9nlhmmkzsdbpdctd7ninec
+62eightnine7nine3lrd
+qbprlzczreight7threegqnrshrhc
+3qlmr
+three1twojgptkzgxmf
+twosvdsfourone8
+5sixfourzvjtkpk
+six418
+five523fivecbs
+nineninesevenztfggvfkgkzfcm2
+qnsix5dnv7three
+three5twofour
+hlmtnzsmlnjxdtwo6
+9sixnglrctg
+onecrgfq5hdldpc
+nhzctlx94eight
+19djvld
+tzp8zzv8six1
+1nsnine5sixhqxfk
+33sixtwojrdvksrfsnltglggxdhbsxf
+bbvtpxptrnvjqzl3rldseventhree6
+2lcntfphb2lgpjbdeight
+fivetwo1jjgkt9kltwo1nc
+7xnmrscpfkthreejqbhlrtf4sixrbfrone
+3threetqfkv1twofive
+95ninejlftlxrs1nxxfsqz
+hrsrszgrcl9seven8eightksdnhqsq7eight
+5436ninefour
+one5five
+prcmxone8lhkblvr714three
+92btgsllktgf7fivejhgsg2eight5
+fourmm61nine558nine
+bxjx2
+one6onetwotjxthreefour8
+threedkpnpfvgt1one3nine1
+bxfour3two2sb4twondmfdpsz
+11sevennrpxftwooneeightmx6
+9mqxcrjxnp7hdjgqktxm
+2rnjlg7mbxstzbdh
+qmsixhckzone1
+qzsnq6sixtwosixtwohhgbsrqgnine3
+foureight7scksqtkmnfiveseven765
+15oneckvshqd
+41tzlxsfivebsckffdps
+threefivefournine7
+5fiveonefour8lhqmltwoeighttwo
+four5six
+mhnrspfourmflmvkc52cjkvxheightsevendtddjdcnb
+vxrrlfnlqf1twoeightninesixonetwo
+8xonetwo2
+rveightwo79three
+onebjlr9sixldqrbtwo4
+f1lhrbsix
+mbbkv7ffpk
+8twofourmxqvkqfcjfoureightplgpmrtxm3
+2rtrxjzqeighteightqtmsfnpdscpgqvxd7
+nineqggljvzvxltwozsvsfournine9
+ninexpmnnvqsfhnprqrqlcgfive9mtnflvttwoqlgphhb
+11kbpmv1
+htspdnh1xhbbh3lzcjjx1
+five6fivefive5six
+sxtbktj7
+ncvkgvgbeightfour89ttbrjthree
+xcgxzxbfnkxdqn73eight
+5nine4fivesixtwotwo1
+ffgzdfhn6
+fourzvtfcczlxhnnx5three
+threednfntx4eightwovql
+sixtwoveightnine7twonineseven
+seveneightcclmgknrgninemnjsrsqsevenfftmlqkch7
+pvqnltjs2hghkrphnine3scngkjfcsn
+62vdnbzrcrjsndqqr2
+5cxhscqpgdzbrnnq1m9b
+gnkclhmbjfourfivemmxpqx2qlxvsix
+sevenxcp4fourdlqgpxcl
+8eighttwoone
+bjslbfrspcnffnine9rvnjjrvcsix2
+six7tfive6hkllf56six
+km3
+sixtjt2threefour2vqqcxj84
+9vflltwo4five
+nineprprrcjt3eightmxfour
+4twoninehvsbszqr
+dtdmkcsd41eightfourxppqzkjb
+xmdmghzdp9sevennine94
+2bbjsdlxoneeight
+ninefivetwonine8
+68four
+ninepdjpfmzxthree3dkxgttvncbr
+52threesevenninefour6lfrlrsgzk
+ghkczjt86bdk3czvhcone
+cdjsd6jhnnnhzbzllqdjgpgnninevmcvbcxxltsix
+1mxfsrninegfmgvnine14hbfnshgbprone
+39four8
+bxnnjqkninetwotwo58txgvrbxvq
+k4bftq68seven4nineseven
+seven97fivekxjnseven4fourfour
+drgttpqpsevenvrkxdlmvtctsc72seven
+eight298
+2zsqmjskp
+six5bgdkhzqt
+fournlknxg35vqdqmnln6f
+565rqtzdpqhlldxgnine7oneeight
+3jfthree7vlkpfour1
+fourgngnqtgd675vgrrjf
+25nrfive
+kmlbnrm5dtvqndldh
+vgbzkpnltxrp5tpvb
+5mbzzk3nine7cqkngz1mm
+sevenfive952
+4pxk8four
+seven87fourlzlnineone
+zxllsctgqmsevensix72
+9ggkqvsrhftwobndlt
+8sixsfzlfpztjtwofourqvnptkgllxcf
+5dvsjvtm
+29dsvjrl3pvgjqncbgcxc
+9mhvrb8fbtppbhm2s
+eightninel5
+jltnzpcdr8one5szgf3nine88
+8xzgs4chdkfour
+three7vgnbtqvhthree8sixq
+2onesix354jj58
+175rpdmxfeightwos
+gmngst7hpfvgmtfrqbb
+9hd2lsxprdvtqxcv55
+four13cjqkvgxvbseven8
+1kqfrqsevenqgjttjrspd
+7seveneight6zfmdbzdj2
+9sixpfjbnthreedgbhblmr
+7hdqqqkone6htzthree
+hmnxstkbzlhqjpdn3three2
+dpbjgmnn1
+ninefivecznsbttpcvkthreeoneeight1zqtxb
+6hlxdlpgrl7six
+fourdhczrzd9mmmdthcngsmdqkq9fivetwofkb
+7fbcrzcxjvxtqbfive168
+sevenhlrkxgrggkqgd12
+vzmpvhqvkpdfmthreetwo9
+21cqxtjtwoljsixxbf3
+bzzxkxtl3rhsrpnnzseven
+threevhdqqvtwothreenine48frqsfhgsgptbbn
+foureighteight3pgbcftjdbbsmcqjcrmt21
+twovpfbsd42five
+6foureightwofh
+5185cbhgvkvpfzk1
+1one3two5
+seven3mdjks6kctnnchjgpnineeight
+sixfivecjfkx5
+sccbfqfive28bhconexmztpcftrbz
+qfzhgl1nine5four59nbxhclpk
+mjrvgdz3nine6gkvznv83
+mfxqslvpzeight2
+ztwoneeightknnjh4nine
+onefivesevenfsmmhkbcplj6seven
+2lfgzblvdflgxnsqfxtksbb
+blmvzczjs61fourmtds
+5two2
+jqppjfxfour2
+3five2bcrn653
+86five6bseven
+rzztlcbvteight135
+1sjngcngjrsht3ninehninefive
+81sixkrhvrhxqhn65
+dkrgmnlcbjdjxblbfnp5
+three85xrckdqtjqphjsjqflmt
+5fmptvmz19fourmbzrttnxnk
+dptwonefbqhrxtljddtkhh6four23
+xfvgkfive69
+cbtfrbpxphj2sevenmmzrpccnine
+5twotwoseven
+fivetwoeightonefive954
+zxccrkvgdqtklbnhtdtdsghcseventwo6
+three6vqmtchfdjxveightone
+onenine39twodksvrdsxflthree
+threesbpseven5zqtwobtmpgqjg1
+326dgjmzzfivehkhsjrseven
+dgthreeeightthreefbhbltbdjnineseven3klvx
+4xkcqeighttwo2
+eightonerhlnchp17
+2jcmzbczstsrmbpzxpftkmznzckhv7three
+7foursixbrcc6twosixgnf
+4lqxfourtvxhqtlhlx7xcfxhmqzbone
+2sevenz6sixtwo
+nine1pv
+95jzlkxn
+onerzfnqhmtjpqff93lrctjgqhseveneight
+5eightrdjnine3
+threetwo6fourrcrq9dfmbsznshkfqmpvcb
+five3hpjznhbtjonecvfgfsk9n9
+2gkbqpqn31
+sevenfivefgcvtpsxjprfh8nine
+lvfxml6992
+5threexmjjgkv8985zzjqdbtwo
+eight3bkqdnbmrtb5
+7sevenoneznpx
+9hjg4eightrcsvdkbmldjclfqfm
+9four2one4
+koneightonecdfcrjkqtcsevennlvr8hbrc
+seven3lthbv8
+ninexzznsix5nine
+ninentdd6qvkclninefivenine
+four11pgmxz7pnjfiveeight
+threeninefourpmtmlgllftnvxzn5twonine
+four46eight9sevenfive3three
+blztvfkqggcbshlzxppxgrxsr4three3
+one9pvlnv
+8l37
+brjvlvjrhbfourxshh1vlclvrz2
+5flqnkntnxkzhcftmzb9rlfzxlg
+sixfourseven77onekone
+6xfmdgjfeight4qzrncxdpmb4four
+four28
+seven74zrtpftdldc7fqlseven5
+6gxjzskpkfvmmd
+zkoneight99jrrmgsfpsixfiveone
+9jbbdtdxjsm8szxblgjppx4tpnvqvtlrj
+rsrlrcb32ngsixfourfivenine
+6seven9one7threegrfqpncjthree
+onebjvpzzqhvlhg1pxkvmgqvxsrglb8fourptbjs
+1fch
+njhs4p86n22
+two1one6four1six
+fourphxjkjtwo8eight
+3svqrzd1fourcmlcknhvninetddpbcmbtgqpcjms
+vkndzm684sixjlgkcvz4
+25five
+pkzt2fivetwo2zffkjqrhgfive4jpsj
+sevenmpfcthreembjgbfpkdzqlr4
+49four1mpldzb3
+hdzddkxf1cxftflb73
+zrmhdlhk2v7
+25zcd
+11eighteight5qcqzpvvk
+38nine43
+8lstwo
+12sixnfbrgbhdpn1three3
+8eightcd82rzkzlvthqnvhjvgfour
+24jcbjplcnqbcrxs25
+3fivebfkgpkglfchbmbfps
+pgmvbnhskgzdmz2sixeightcjq5
+cdpmrlj1one
+6hxqoneightjjv
+34gxbjzrtg5
+pvddskbslqnrfngmcjgsdthree3
+6nkjjlknp9
+hflkjhgjmeightc5n1
+dmkeight1223
+five9three8
+eight7mqfsjplfprrfpkzctgtdvrmxphm
+phbs2fck4sixfourqvqbr
+2bnvktn
+sfvkgzone83
+2threetqnthdnq32ninetwo9
+sixhdkvdcmp5three23j
+8615four
+twosix54vrrbvzszk9
+53671
+threevklcphgkjsnine4eight4fmtffknglthree
+sixninethreeh4dj
+oneone1pmdthreesrfsssbkt8
+7foureighteight3
+srpvkzrqfive378
+6twodnnrvfjrjv
+4kpxlslqfbktwo
+bvzpgrc9twotqsvdztwoseven8
+xkjdltjgzbjhxkjvtwo6
+five27sixsevensixtwo9nine
+jk468qgkr
+fourtwo89
+fourthreethreedtnzbmlfhmgjr5nineseven7
+44seven
+two3psfive122jps
+sevensevenghzmpdvrffive9nine3eight
+497ftdf9five
+gklfive6rnvpnvvkqheight
+2hvdfiveprrdqspsix6
+5m8nine
+bnctbninexsixonesix8five8
+xkqqlmfmrveightsix4nine93nine
+6k
+3foursevensix6cksix5six
+7twoone
+three73lfddzhd1fkxmjdzsix7twonex
+sthjlrjrhd741prcsqh3rmllvjmtvgfour
+4dvffpjkn
+tpbttcslvz7twoneq
+fourtwoninej5snfxnqzthree
+n7cmsfsqd
+eightssrzkxj5
+239
+three8five7xxthreebqrbx
+zrlchvsevenfournine4ktvskhjgh3h
+7fourfdjsnhdbgqjvnltzj6three
+mrjsndmzkz7rszqnbhxt3fvsix1
+neight85eightggtnxtgljsevenfivekz
+6vknslh4onetwonrlzm
+37zlrksix1skbsdkpjf6twonejtx
+three2843five6
+txgdvvdg959
+zfjrs2zvtbqctcdqgrpfmqsjbdone5
+six9eightninetwo72sxxnzvblthree
+2jdpslvbnpqjpglczkmzggkfkdkx8hgpxtcz
+threefive5eight5mnbllfpcsp29vlnbrntt
+gfxndggbs16twozpcsckzqcj3sthsgq6
+gcjjvqkvzdbcsnmqqhnzzqvj4
+flcpl3btfmbbpnkjvnlmcthreetwo1eightwops
+bdmeight67tvkfh2
+three645qcv1zbbheight
+3ninethvbxxppxgqcqrclptxczgrcneighttwofivebrqxl
+25eight41
+six22
+pcp5
+dtmgxkdqsixdhmsbj821
+eightprbxpj5oneightcxj
+qvrn3jbhlxjsdq
+oneclvhjhr5
+9nkmqpjjxxhvtpndls9
+215ltwo75
+threeeight16nine2mzhxnine
+ktfxkmdvzprhkpdhvxhzsc68
+fivesix8five
+4z1eighttwofive
+73twotwo4
+gmjlpchdzfthreesix1vljxdqsrlxmmqs2
+twofxh3
+threeqzcglsdcfm4four
+three1eight8
+seven7dtqhr7
+4xbjlxlptj8hzfjnz
+37jzgxbjcggone
+81fouronenine489four
+eight3fiveoneseven135
+stzts59zqdvrdcqrc
+sixnklrjbeightn2six
+bqdtntwonine1eightttzlzvzfn54xmj
+sjk6
+qmrbnhczj624394sevenseven
+kkjdcjhfh93eight
+3ptmslnconethree
+cfjgdffcgvldsnvkbjqrxhxcl7fjlxdrlrrthreeseventwo
+187oneseven6
+fiveprnppdg2tjfbfmlvhpmkggjc
+9onetwo4
+fivesvjxkzzm59vtsevenhzxtkggdhr8hvjtjvv
+kpxkbbxseveneight89sevenrbhqqpk
+drhkpssxqvvnssq59four4
+oneeight17
+gteightwoone268four
+eight7fourbjnlzfiveczlzppnxck
+jdqpxsevenone2eight
+pvh5six4hddrhfzpxfmtwo
+5six56nineone2
+v96k9115three
+phqhhthree5ksqhfjlbfg
+gpsskbfhhllnxfvjspkjndtlfour5
+three5zqbnsrdthree8
+b4mkfpkltlfdfive4mdqxjnb8tdpnpf3
+qfivejjggrpktxponetrjzceightseven9xhdf
+34cpfxc
+jl9
+84four
+fourthree9three48
+7threevgvtj2five4pbq
+7kjkjc
+seventfsvjbsh5smmdd3frthree
+smgmzqzn5
+gmtd5kvglxsixeight8twothvkprlbc5
+twofour62
+nine5k
+hbxnpb4four4h
+6sixgnmnjv4fourone1
+9eightseventhree
+9jpvccsvhqpnhsl8
+nvcnninefour9
+v237ppqbhb
+78six
+four165oneightxcm
+9pjcsfbrghnineqzth4smx
+46fpfptrq1mbqmbnktqeight
+stbxvlcqz5krd1threethreeonefour
+48six5seven
+6bmltlrvrgpcfhjhmfiveqzfxptjtwo4zvsqqxgbrdlzsfmtzdd
+jeightwo47three86twoseven
+njxzmthree8fivevvchvjqdvn3foursix
+83t34
+oneznzqptpxbrtqxstkmz3kmtstds
+1sixsfrnqd
+brs7fgkbhntv5s5
+twohs7m
+gfljsixseventmgdvhqthree3threefive
+f1twonekdh
+oneone735eightnine
+pfjvfspsseven9qgfrnmckxzsix94
+7nineninelrcqqcgcnmmqf3
+1vjdhjtrfourfive2nine278
+oneone7
+threelcxlqrzhdghp4zkjfivepjj
+hcshggsmzpdmkvtdvdgqtfxlt8
+1vdjtvpfhkhfive1
+2eightstnj6three
+93threeeightntjblpljbv
+onermlmtncmj6pxkmhmqchzvzf
+4eightfnjzfzhvg
+hmjvmtwovnl8nine84
+threets6
+six9twofivexgz63
+692five
+fkgblptntvhvmlv8threethreenine
+seven86
+nine1n7
+97two
+4threebqqnmvmqleightthreefiveszppmbhxrxvpxz
+6bxbmbdkxqmzeightlrqdqvrkr5threethree
+llqcbpeight1vpjninekpdvzg
+6qgtdqvtvkcbcskfqtq
+6threegrrmxxxqkflltr3
+312
+hqmhsxpmkxtwosix3
+rpzqtmzgdfdxcgsix1six63lxjpbxfq8
+zzkbtkghmmqfourrtsixxxfjnvvccmpsd5six
+13two4bxdcqzrkqtxm1mplvqxcfhcjsc
+threesixqj8two
+9seventhree
+dtnine5twoseven6zxd
+lsqbvgjnznineone7lxtvmkmflrfcqdjmjtwo
+zpkjlfp6onevxtdtdzmcqjprfive
+gxplqqsz412sevenninejs1
+psvjsvvnrv796
+69tfxkbkchvlhkjbrmone
+fivehnrvtb6
+eightzdlqrbzxteightptlgmcmvtwothreergcddqxf2twonepxh
+343sevenxsffneightdvft
+fivednmrpmvv8fiveninesevenzbggk
+seventwot3hpfrzbhxlhfivetwo7zvmpmq
+xnsxz8fivezhzdcbzsvp
+sfzch8twoned
+5rstpx
+12six
+gqznine5gpg
+6zrmsp825seven
+2493twothree
+9fivemksdnmgbvx
+6dvdpdpkmqpxvfive28six
+dzvnrdksixonetwoonetr4
+7fncndxbqj6onetwosixsixthree
+7cnprcdgk2three2dvtccqnskvzfsevenxdrnqf
+cxfcdvbsjqjbnxddlggjfourtnfzvtgx4twoddkkpdd
+pxjgqrmdg5mpcgcdmfeight825jxxqcnfive
+1tkhgtzzfrbdvnbft
+hgxfive14ddcfhshfd4
+onenzlhvtdgkjmjgldmddhngdv9onebkt
+foureight8rzxkktk9eighteight1
+478nshqhnhjrmlqbmp
+ddjzzxgj75zktccgqrltfivethree
+eightmcnmt5jnmnqhqdfive
+rcdxshk1seven5
+rdcmbznk79
+2gtbskjxpmmvdclgmfjrc48one
+8mqgnfive7chknsixrfourseven
+4hgdxjgbn1sixseven7twosixseven
+mkjslkltjd59
+fourfoursixfkjrcfsfivenrtzv4eight
+five8threeseven4
+81821tcmfourddhmzvzfive
+onesix943fivejld
+5eighteight3cmvvpqmdq72vrvb
+two86
+nqjrpqvgqr7rjjjxglqzrmt
+5kqjjvzxt
+6fourvstjrlnvone3ndphzphkrnsqmkmsthreep
+six8four7
+two1dntwo
+eightgmcgrnptrcvztbdp4three
+xxbpnnztr5eightpnqeight
+three9pfpnjx6rkphpjeight3five
+sevendzstsjl3krspscb1
+fsevenfqtxxhjzvnineninesixeight8
+kznjhnxbnk7qbxjrztltv
+rkeightwo6zfpvrfgqr7qxbkkg43lrjqtzjrprqttxmbrzg
+mcfive77vgzxonehglbj
+9319
+4mzds
+sevensixthree5sixdvzxkndhvjfive
+9mjhfkeight88v
+seven5zhdthbmrkdpdxfcp8njtqvpnjj14
+8ninetwo
+95tnjldjqcrzdxlm3
+fourgffour8
+nine821qbv6five
+jbtfg83two
+twozcpjrcnplnz5bdtgpdctb87lzlvqhtrjj
+tr4
+5foureightfourfcs
+1cqjts1jgzkfm
+66threetwo
+jsdpkfnineeightzpjdmrvxkbhdntj9
+pgcqrsix6mqrr8threeqxgkftbmzninevndn
+kmvqsqhbrcnbqqgninet6
+bxtstqzpqfzqnhjfb8htszvgqhpnggvqt
+ninecpqpffivehg8
+kxmstxkffourqmx41
+scfourlkfbrjvbtwo5
+qr88fivenine1lfvksgrtqseven
+four6foursix
+twoqmnxrjql5fourpdlstnnsfkdjgt9
+4zsvbsjqv97bpxvncr
+xhqlhsbqjhvdqqonesevenfive3qvrtbkhhlfbzsj9
+sixeight4six5szgzcjhpj1
+7vpjq9hjtrjgone
+f92eight
+eighteightnc8134
+22onespjpxlttsqsix8eighthxdfvsdx
+5ninefourgrrmxsxjfxk
+threeninepmvsv763xlxjp
+oneone7lzzhjqqrg
+9fourtqqmhrpmkxhrvlnjvvhsevenseven
+threethreetvjpnoneseven8
+two46onetwoqbvntlxbrftpjf9
+8one5nine1three8
+three69sgdkstpqbqdz
+q8rzcl
+onepjmchxtlqnmrcrvm6
+61fivegjjsevenqgdkq
+49fxhdzfntmk6tb8dpdkknzsb
+bbseven1xvqmlrhx
+2j
+seventwozjqszlhzxlpgphnkz2foursixfour
+1sixhgvhrbonetwom
+fournine8gvmrpgdxvcbdspzdcqt87bdzvxbf5
+3sevennine2fzpt
+threedcdlq9kcjhtmtz
+86five
+tpfqhqs3977
+8four1cgmm12shfl58
+xlkrrkpkqjtslblqfnxp7two16jzpmpkrfvdzh
+243
+three9hkgnmrh6lqrsx5
+fivexsczpmltrmcgrvfc58
+mxngrsh2sevensixthreelgrmg
+ljqmflvone76
+ksponeightthree2ninenine
+tdsdmjznr5nine7fourtwojgjsdfsevenone
+eightfive1fourseven3gsqhtv
+1xfdmqtmgkmjkthree
+rztwonelztpgkxzzcbn1eightttssdpone71
+zthhsgvmhqsgvdponetwo9p
+293rmjjjpmjchjnbdcssfrneightvdzrkbhdln
+7nfkdntfourthreefzrfxmxgqone5
+tkgrnhbflp7zltmbdoneeightwoh
+7bspgfklffgsix4
+eighthcmlrpbhjjmvbjrleightgd94
+sixbgfjzgzbxsb4qsixthreehbbn
+ninerhzjpjdfnsevenonenine8
+38kqzjxqmmm
+jngngvc412
+4twosponesixdpj15five
+41four2oneonekr2
+cpsixjnlhkthree353seven
+bknflgv1sixfivefive5
+3qkhnsjqkcjmlg7gl4jthreethree
+dhlngstrvbxjjll2979kjsttsfgjkc
+4kkq7rqlxcldqqtwo
+jfh74
+lkfpcdghgq8gpgldrsnzkzzzzskrvcvsjthree
+57fivefive3cxqj2
+ztwone7vcd37122
+4qrrhhlxgpr4
+twokzfjg2sevenlnvlpzxknznpsc1
+4jjbcdbfm8six6four
+5eightninesixvzvf98two
+8flntwomkktkpvsone78sixone
+sevenzltjhkptjfjbrppm85eight
+fivemfrmnqptthreepninepd5
+6one9
+vkqxgzmbm2b4pjqjddsbjnjcqqvm9
+5443nfkv
+leightwo5
+8fiveeightonetwovgvhzgzfjh16eightwohlk
+fivexnbhkzjfg1
+chkxvgrgb1sqxsnhngnrtqsnqgjkd
+96twoone5553dv
+36pfltskrbcmlmnspn
+4jbbrh95249
+xfzspqssdfourhnmtzfive2pfzczh
+onexzbzhddkqgfr2
+sevenninerrlveight5nine3
+eight7qvgkbk238fiveeight
+sevenseveneightgtxtxkjsgdgklzzxxc3two8
+tvfjhvtclm75skqdxsskqhrjkbg
+45
+sevenfive82
+425zkhjhmk
+onexdchhtxmhsevenbczrslrppneightonenbnhfmbsvdcnzjx1
+zfkscdbmtwoeightrksdmgx4
+lnseightnine9eight
+fourhmbhlcpht53ngkbzjmfivesixg
+threestrhbj9sixggczcg
+9twoskgrps8
+3four6xdqczgtzlzf
+ldfn2
+qlzjsnbzfourfdq476
+tpkczdh5hdbxvvmmt3sixsix
+tdpxzld5
+lnveightwohdkgcvvrjs38
+zz8eightstvmhvrh7hftdhkrjcneight1
+9kdbcpqtx15
+rbqgdbvrstgninefive4bqq2six
+nine3psmkzkgnjbndrcninesevenzvcr6
+eight4jfrqcbqfninedxmdtjgqgtrg6four5
+3mmnineninenjjpmfivetwo
+cv4znxcjthreeqqtdqmzxfknnp
+8pjkm
+ptwonethreegrgvseven7
+onethree1bgjsix5sevengpts
+96xlmmthreeeightcbdnrstvpncmr
+rtc94tcninefive
+onespqnnptpdbrgqsqrldstl1
+qkeightwotwocjcngknkztwo7
+gzjhzlf4fdglcrzckbrlkmg
+3eighttwopninefour
+2seven1c
+17nine447qkmfour2
+six6xfgqddnfpsc
+mkbgbkvzdpzxfmrhdcjklxfoureightzzpn3eight
+95ninevhctbgznbzz871sixoneightr
+31onekmseveneight2four
+mlxqgmvj2six6
+2sixgvsbmrhtwofour
+eight221three99two3
+88xrrbjdlzrfour8plv
+xdglmrpxbz5xpjxzpmvrgsixthreeseven7threebtqfkqp
+lbd2onethree
+seventwoseven7threesixbpld
+1pstwofour8eight3dsdfrseven
+gnvzm19htsbvcsfmlrmbgtstzmm3twoqzffkrrq
+94nvrbbj
+one71rsfbpnnbkrklmxqfive
+4six1
+eight48chsrmsix
+vqxrnmsix98hlzdgvd3sevenninekng
+12threehscqzvzcbgfive6three2zhtthr
+6sixkzrnv
+5gmnhhzkfmp
+four35seven7onenvdsevenftnpbcj
+6zxrhcxxkppkn2
+dgshxchmhgtgjk281seven
+lbdsmfvdsfzlp6dfpgd3
+three2dpsdhfld95eightwoht
+jbktdklsqkgnhnfmseven1lhdsbjksixtwo
+3fdqfour
+5jpljkkpmdsix
+qfeightwo9threethree
+hpqdx4911tzfcxlrtccqf9one
+q79zspgmjpdzs63
+344zk5xbthreezgbffcb
+nlzmjfqxmneightxqjdnjvr21
+8cxtrkpvzj21xfgbdgcvgrztwo
+three18444
+sntrptktwo2one1five
+qxjrgfcnpcjtnfjljqnq1onehzfcqlnine
+kflgzv58dbzbjjdvclgtseven
+twofive4eightwozz
+eightfive365
+7nqnksvphhnine88
+t8eight
+bjd6five
+khbrbtsx5jqxmbsqtf5nine3sevenskhfg6
+seventlkmfhqkgxkbhqr6ncjztnfive
+152one
+three5cbpqkzb4eightseventgmqzflsfksix
+seven32threegfddgtf
+two5twofivexzkkvcqs3
+tvvdgrnqlmkfour1zrcznqkhseveneight1q
+92threesix89
+3zbdlttpbh7fivepgxmrvbzlnfgmbkzknndfqk5
+threefnhxtdbl1jtxeightwol
+5vgthldgfmgdjphvcgh53dshmdkc
+3nineeightwokh
+57eighttddbcdsjdss
+tkcgn86xfgbmzt7rksvnchnrh
+five3dn5
+three2eighteight15nine
+49bn1zvbm57
+351six6xfzfjvpz
+5one5zchddj4dkksn
+xfhtwonesevenfivethreepqzmrzrrfourthree5
+ninetzmcgp47four
+sevenbcfbpnrvkkscrjtpctdtb69bvvnvlgsmjltlvs
+6threev
+ninerlsbznvfn9
+fourbm2
+sdxd22
+n7
+7sixcjdsxfourfmvzrbvlnine5
+threeqtbhgznine7one
+ftmkmxkd9fvvlg353rp51
+9zjhmpnjv5jvndz
+58three59nineonesix
+rmjvhrjjmkqsn6gqthreeonefivemxqhrzvffone
+xsslv7gpgkbzdmr434four
+pnzxp4nbtsjqctkvqncxzxzj
+eightseven52five4ninekntfjrdt
+4sixldsmv
+pknxkqgdpnc7fivedbvhkn
+qkpjhjlxone4sixpfkvhlmxmd3
+four3ninerkrcvgcmbb2qm
+fivenine6six1eight
+69sixnine
+bvjx5lg5vgrqq
+21ninegnhdkcxhzkcfdksvsmdthree
+zjrnmhclxhrkjpffhxkthnvj83jnshbqvx
+bzfphcg9fourthreegkchdvrgsx
+2ninebvgdcfxtktqjxjqvxfgjdqfhv5threegqtsfhtfxg
+6rqskvckjzq2qzrnbxjmlthreeeight6hrs
+sixthree6lxcrsevenseven69twonegs
+2dcvcqcbpshsixone3
+drkdbmv4zbjbznsqtj
+eightbqfhnmvqsoneninezbrzcqkz4ftv
+1eightcrcjcbdthreebscfpvznqfrj6
diff --git a/2023/day1/src/lib.rs b/2023/day1/src/lib.rs
new file mode 100644
index 0000000..3240d6d
--- /dev/null
+++ b/2023/day1/src/lib.rs
@@ -0,0 +1,97 @@
+pub fn part1(input: &str) -> u32 {
+ let mut res: u32 = 0;
+
+ for line in input.split('\n') {
+ let mut d1: i32 = -1;
+ let mut d2: i32 = -1;
+ for ch in line.chars() {
+ if ch.is_digit(10) {
+ if d1 == -1 {
+ d1 = ch.to_digit(10).unwrap() as i32 * 10;
+ }
+
+ d2 = ch.to_digit(10).unwrap() as i32;
+ }
+ }
+
+ if d1 + d2 > 0 {
+ res += (d1 + d2) as u32;
+ }
+ }
+
+ res
+}
+
+pub fn part2(input: &str) -> u32 {
+ let mut res: u32 = 0;
+
+ let hs: [(&str, u32); 18] = [
+ ("one", 1),
+ ("1", 1),
+ ("two", 2),
+ ("2", 2),
+ ("three", 3),
+ ("3", 3),
+ ("four", 4),
+ ("4", 4),
+ ("five", 5),
+ ("5", 5),
+ ("six", 6),
+ ("6", 6),
+ ("seven", 7),
+ ("7", 7),
+ ("eight", 8),
+ ("8", 8),
+ ("nine", 9),
+ ("9", 9),
+ ];
+
+ for (i, line) in input.strip_suffix('\n').unwrap().split('\n').enumerate() {
+ let mut idx: Vec<(i32, u32)> = vec![];
+ for (k, v) in &hs {
+ let ms: Vec<_> = line.match_indices(k).collect();
+ for m in ms.iter() {
+ idx.push((m.0 as i32, *v));
+ }
+ }
+
+ idx.sort_by(|a, b| a.0.cmp(&b.0));
+ println!("{i} {}", idx[0].1 * 10 + idx[idx.len() - 1].1);
+ res += idx[0].1 * 10 + idx[idx.len() - 1].1;
+ }
+
+ res
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn example_part1() {
+ let input = include_str!("../example.txt");
+ let result = part1(input);
+ assert_eq!(result, 142);
+ }
+
+ #[test]
+ fn input_part1() {
+ let input = include_str!("../input.txt");
+ let result = part1(input);
+ assert_eq!(result, 54159);
+ }
+
+ #[test]
+ fn example_part2() {
+ let input = include_str!("../example2.txt");
+ let result = part2(input);
+ assert_eq!(result, 281);
+ }
+
+ #[test]
+ fn input_part2() {
+ let input = include_str!("../input2.txt");
+ let result = part2(input);
+ assert_eq!(result, 53866);
+ }
+}
diff --git a/2023/day2/Cargo.toml b/2023/day2/Cargo.toml
new file mode 100644
index 0000000..8aa34bb
--- /dev/null
+++ b/2023/day2/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "day2"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/2023/day2/example.txt b/2023/day2/example.txt
new file mode 100644
index 0000000..295c36d
--- /dev/null
+++ b/2023/day2/example.txt
@@ -0,0 +1,5 @@
+Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
+Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
+Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
+Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
+Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
diff --git a/2023/day2/input.txt b/2023/day2/input.txt
new file mode 100644
index 0000000..249bfe4
--- /dev/null
+++ b/2023/day2/input.txt
@@ -0,0 +1,100 @@
+Game 1: 18 red, 8 green, 7 blue; 15 red, 4 blue, 1 green; 2 green, 17 red, 6 blue; 5 green, 1 blue, 11 red; 18 red, 1 green, 14 blue; 8 blue
+Game 2: 16 blue, 12 green, 3 red; 13 blue, 2 red, 8 green; 15 green, 3 red, 16 blue
+Game 3: 6 green, 15 red; 1 green, 4 red, 7 blue; 9 blue, 7 red, 8 green
+Game 4: 8 red, 2 blue; 11 red, 5 blue, 1 green; 12 red, 1 green, 5 blue; 1 blue; 2 blue, 9 red
+Game 5: 9 blue, 3 red, 12 green; 3 green, 4 red, 17 blue; 15 blue, 2 green, 5 red; 3 blue, 5 green, 6 red; 6 red, 4 blue, 7 green; 3 green, 10 blue
+Game 6: 11 red, 2 blue, 6 green; 2 blue, 9 red, 4 green; 3 blue, 12 red, 8 green; 5 red, 11 green, 4 blue; 2 blue, 9 red, 13 green; 15 red, 3 blue, 7 green
+Game 7: 2 red, 9 green, 12 blue; 14 blue, 1 green, 6 red; 7 blue, 9 green; 9 green, 8 red, 4 blue; 5 red, 3 green, 16 blue; 4 red, 8 green
+Game 8: 11 red, 12 green, 1 blue; 4 red, 7 green; 11 red, 6 green; 17 green; 15 green, 1 red
+Game 9: 1 red, 1 green, 12 blue; 3 green, 12 red, 6 blue; 14 red, 1 blue; 9 blue, 1 red, 3 green
+Game 10: 1 red, 4 blue; 3 blue, 4 green; 3 green, 3 red, 8 blue; 2 blue, 3 red; 3 green, 4 red, 3 blue
+Game 11: 8 blue, 1 red; 8 green, 1 red, 1 blue; 13 green, 9 red, 6 blue
+Game 12: 2 red, 2 blue, 1 green; 3 red, 1 green; 1 blue, 3 green
+Game 13: 12 green, 4 blue; 2 red, 2 blue, 8 green; 6 green, 3 red; 3 red, 5 green; 9 green, 7 blue, 1 red
+Game 14: 1 red, 7 green; 5 green, 12 red, 10 blue; 9 red, 11 blue, 7 green; 7 blue, 3 red, 9 green
+Game 15: 7 green, 1 blue; 1 red, 2 green, 1 blue; 7 green
+Game 16: 1 green, 1 blue; 2 blue, 4 green, 2 red; 2 green, 2 blue
+Game 17: 6 red, 11 green, 7 blue; 1 blue, 13 green, 4 red; 4 green, 6 blue, 7 red
+Game 18: 2 red, 8 blue; 7 red, 11 blue; 1 green, 16 blue, 7 red; 18 blue, 1 green, 14 red
+Game 19: 2 red, 2 blue; 1 green, 6 red; 1 green, 3 red, 2 blue
+Game 20: 6 red, 2 blue, 5 green; 4 red, 1 blue, 9 green; 3 blue, 2 red, 9 green; 8 red, 12 green, 5 blue
+Game 21: 6 red, 7 blue; 3 blue, 16 red, 2 green; 2 blue, 13 red; 3 blue, 11 red, 3 green; 1 green, 18 red, 6 blue; 12 red, 5 blue, 2 green
+Game 22: 9 red, 6 blue, 14 green; 1 blue, 5 green, 13 red; 6 red; 18 red, 4 green; 2 blue, 10 green, 16 red; 1 red, 18 green, 1 blue
+Game 23: 6 green, 4 red, 3 blue; 1 blue, 2 red, 9 green; 5 green, 1 red, 3 blue; 5 blue, 4 red, 4 green
+Game 24: 1 red, 5 green, 2 blue; 4 red, 7 green, 9 blue; 9 blue, 7 green; 7 green, 13 blue; 4 blue, 1 green, 4 red
+Game 25: 13 blue, 10 red, 11 green; 10 green, 1 blue, 3 red; 15 red, 5 green, 8 blue; 19 red, 10 green, 13 blue; 12 blue, 4 green, 16 red; 7 red, 5 green, 9 blue
+Game 26: 20 red, 6 blue, 12 green; 15 blue, 17 red, 9 green; 19 red, 6 green, 3 blue; 8 green, 1 red, 15 blue; 10 green, 8 red, 5 blue; 4 green, 20 red, 18 blue
+Game 27: 2 blue, 3 green, 7 red; 2 blue, 4 red; 5 blue, 5 green; 8 blue, 6 green, 2 red
+Game 28: 1 green, 6 red; 3 red, 3 blue; 1 green, 4 red; 1 red, 2 blue; 2 red
+Game 29: 8 blue, 1 green; 7 blue, 1 red; 6 red, 2 blue; 2 red, 3 green; 3 red, 6 green, 5 blue
+Game 30: 11 blue, 17 green, 10 red; 9 blue, 12 green, 14 red; 16 green, 2 red, 8 blue; 18 green, 1 red, 1 blue; 5 blue, 7 red, 18 green; 9 green, 3 blue, 11 red
+Game 31: 5 blue, 13 green; 2 green, 3 red, 4 blue; 3 red, 15 green, 2 blue; 5 blue, 19 green; 5 blue, 18 green; 3 green, 7 blue, 3 red
+Game 32: 12 red, 2 green, 3 blue; 2 green, 16 red, 1 blue; 13 red, 4 green, 6 blue
+Game 33: 18 green, 8 blue, 3 red; 15 green, 2 blue, 4 red; 14 blue, 3 red, 6 green; 20 green, 13 blue; 1 red, 19 green
+Game 34: 1 green, 7 blue, 2 red; 8 green, 10 blue, 2 red; 3 blue, 1 green, 1 red; 6 green, 13 blue, 1 red; 1 green, 4 blue, 2 red; 1 red, 5 green, 7 blue
+Game 35: 7 blue, 8 red; 2 blue, 3 red; 4 blue, 3 red; 7 red, 4 blue; 1 blue, 1 green, 3 red
+Game 36: 1 red, 8 green; 1 red, 6 green; 3 green, 8 red; 1 blue, 2 red, 1 green
+Game 37: 3 blue, 13 red; 2 blue, 7 red; 5 red, 1 green; 3 red, 3 blue; 1 blue, 12 red, 1 green; 14 red, 3 blue
+Game 38: 7 blue, 18 red, 12 green; 11 red, 6 green, 1 blue; 9 green, 1 red; 9 green, 13 blue, 16 red
+Game 39: 12 red, 3 green, 2 blue; 3 blue, 3 green, 10 red; 2 blue, 5 red; 2 blue, 1 green; 5 blue, 4 green, 7 red; 2 green, 1 red
+Game 40: 1 red, 7 blue, 5 green; 1 red, 4 blue, 8 green; 3 red, 5 blue, 14 green; 10 green, 2 blue, 1 red; 11 blue, 7 green, 1 red; 14 green, 2 blue
+Game 41: 8 green, 5 red, 3 blue; 5 red, 4 blue, 12 green; 10 green, 6 blue; 13 green, 7 blue; 1 red, 2 green, 15 blue
+Game 42: 17 red, 1 blue, 5 green; 9 green, 16 red; 1 blue, 15 green, 2 red; 1 blue, 12 red, 12 green
+Game 43: 12 green, 5 blue; 3 red, 8 blue, 10 green; 8 blue, 2 green, 1 red
+Game 44: 1 green, 7 red, 2 blue; 1 blue, 10 red; 4 green, 3 blue, 19 red; 1 blue, 3 green, 1 red; 1 blue; 4 red, 2 green, 3 blue
+Game 45: 16 red, 12 blue, 1 green; 13 blue, 16 red, 9 green; 7 green, 3 red, 8 blue
+Game 46: 1 red, 17 green, 6 blue; 6 blue, 1 red, 3 green; 12 green, 1 blue; 4 blue, 2 green
+Game 47: 2 green, 12 red, 15 blue; 9 blue, 2 green, 2 red; 3 green, 6 blue, 2 red; 11 blue, 3 green, 5 red; 6 green, 9 red, 17 blue
+Game 48: 5 blue, 6 red; 7 green, 14 red, 4 blue; 2 green, 5 blue, 2 red; 11 blue, 5 red, 5 green
+Game 49: 7 green, 7 blue, 4 red; 11 green, 12 blue, 2 red; 12 blue, 4 red, 9 green; 3 red, 8 blue, 17 green; 16 green, 3 red, 14 blue
+Game 50: 5 green, 4 red, 10 blue; 7 green, 14 red, 5 blue; 12 red, 18 blue, 14 green
+Game 51: 12 green, 3 blue; 10 green, 4 blue, 2 red; 3 green, 5 blue
+Game 52: 12 green, 6 red, 7 blue; 20 green, 6 red, 18 blue; 1 green, 5 blue, 11 red; 2 green, 15 blue, 6 red
+Game 53: 6 red, 2 green, 5 blue; 13 green, 1 blue, 14 red; 7 green, 1 blue; 3 green, 4 blue, 6 red; 10 red, 6 green, 4 blue
+Game 54: 4 blue, 1 red; 1 red, 1 blue, 9 green; 3 red, 2 blue, 4 green; 3 green, 2 red, 5 blue; 9 blue, 2 red, 7 green
+Game 55: 7 blue; 6 blue, 1 red; 4 red, 7 blue; 3 red, 3 blue, 1 green
+Game 56: 2 green, 7 blue; 3 red, 10 blue; 1 green, 2 red; 3 red, 8 blue, 4 green; 1 green, 11 blue, 3 red; 2 green, 8 blue
+Game 57: 3 red, 1 green; 1 green, 1 red, 1 blue; 1 red, 4 green, 15 blue; 9 blue, 2 red, 1 green
+Game 58: 12 blue, 13 red, 5 green; 2 blue, 6 green; 12 red, 15 green, 7 blue; 5 red, 4 green, 14 blue; 15 red, 2 green, 9 blue
+Game 59: 5 green, 5 blue; 4 red, 6 blue, 2 green; 5 blue, 3 green, 6 red; 3 red, 6 green, 4 blue; 3 blue, 7 green, 10 red
+Game 60: 1 red, 1 blue, 3 green; 1 red; 3 green, 6 blue; 6 blue
+Game 61: 7 green, 1 red, 1 blue; 4 red, 3 green, 1 blue; 7 blue, 7 green; 11 blue, 2 green, 5 red; 5 red, 4 green, 5 blue
+Game 62: 17 green, 2 red, 3 blue; 1 red, 3 blue, 2 green; 1 green, 3 blue, 2 red; 1 red, 17 green; 2 red, 15 green, 4 blue; 5 green
+Game 63: 2 green, 4 red, 3 blue; 9 blue, 10 red; 1 green, 13 blue, 2 red; 2 green, 1 blue, 5 red
+Game 64: 6 red, 8 blue; 3 red, 6 blue, 5 green; 13 red, 11 blue, 8 green; 11 red, 3 blue, 1 green
+Game 65: 4 green, 1 blue, 2 red; 3 blue, 3 green, 11 red; 6 green, 3 blue, 3 red; 5 red, 4 blue; 8 red, 5 blue, 2 green
+Game 66: 10 green, 13 red; 1 blue, 2 red, 4 green; 7 red, 7 green; 19 green, 9 red, 1 blue; 16 green, 16 red, 2 blue; 10 red, 11 green
+Game 67: 3 blue, 4 green, 2 red; 6 blue, 19 red; 4 blue, 2 red, 5 green; 4 green, 5 blue, 1 red
+Game 68: 13 blue, 15 red, 7 green; 5 blue, 20 red; 6 green, 12 blue, 8 red; 5 blue, 8 green
+Game 69: 13 red, 13 green; 13 green, 3 red, 1 blue; 8 green; 9 green, 9 red
+Game 70: 8 blue, 11 red, 2 green; 12 red, 2 blue; 13 red, 6 blue, 3 green; 7 blue, 3 green, 5 red; 15 red, 1 blue, 3 green
+Game 71: 7 red, 9 green; 4 blue, 9 green, 7 red; 4 blue, 2 green; 6 blue, 2 red, 9 green
+Game 72: 14 blue, 1 green; 4 red, 1 green, 9 blue; 6 blue, 8 red, 2 green
+Game 73: 17 green; 10 blue, 2 red, 9 green; 1 green, 10 blue, 2 red; 8 blue, 1 red; 5 blue, 16 green
+Game 74: 12 green, 6 red, 5 blue; 2 red, 4 blue, 10 green; 3 green, 4 blue, 2 red; 8 green, 2 red, 5 blue; 5 red, 2 blue, 2 green; 6 green, 1 red, 1 blue
+Game 75: 4 blue, 19 green; 15 blue, 7 green; 18 blue, 5 green, 7 red; 16 green, 15 blue; 7 red, 4 green, 13 blue; 9 green, 13 blue
+Game 76: 1 red, 2 green, 7 blue; 13 blue, 7 green, 1 red; 13 blue, 5 red
+Game 77: 3 red, 10 blue, 6 green; 1 green, 2 red, 10 blue; 7 green, 1 red
+Game 78: 11 green, 2 blue; 6 blue, 8 red, 5 green; 10 red, 6 green, 4 blue; 6 blue, 3 green, 10 red; 5 green, 6 red
+Game 79: 4 red, 6 blue, 1 green; 1 red; 2 green, 3 blue, 4 red; 4 red, 1 green, 2 blue; 2 green, 1 red
+Game 80: 2 red, 1 green; 1 red, 1 green; 7 red, 1 green; 1 blue, 7 red, 3 green
+Game 81: 1 blue, 15 red, 4 green; 2 green, 12 red; 4 green, 13 red; 1 blue, 3 green, 13 red; 12 red, 2 green, 1 blue; 3 green, 8 red, 1 blue
+Game 82: 18 red, 4 green, 1 blue; 14 red, 1 green, 2 blue; 10 red, 2 blue, 7 green; 13 red; 3 red, 7 green, 1 blue; 5 red, 4 green
+Game 83: 4 red, 10 green, 5 blue; 2 red, 12 blue, 13 green; 19 blue, 9 green, 1 red; 2 red, 14 blue, 3 green; 13 green, 8 blue, 5 red
+Game 84: 12 blue, 7 red, 9 green; 1 blue, 1 green, 14 red; 1 green, 8 red, 11 blue; 11 blue, 12 red, 3 green; 11 blue, 8 green, 13 red; 7 green, 7 red, 10 blue
+Game 85: 10 red, 2 blue; 11 green, 9 red, 4 blue; 3 red, 5 blue, 13 green; 5 red, 5 green; 5 red, 2 blue, 4 green; 11 green, 4 blue, 19 red
+Game 86: 1 blue, 6 green, 2 red; 1 red, 1 blue, 8 green; 3 red, 1 blue, 4 green; 1 green, 4 red; 9 green, 2 red; 6 green, 7 red, 1 blue
+Game 87: 8 green, 8 blue, 4 red; 5 red, 2 blue, 10 green; 3 red, 13 green; 1 red, 3 blue, 4 green
+Game 88: 3 blue, 9 green, 3 red; 2 blue, 15 green; 2 red, 9 green
+Game 89: 9 red, 6 green, 15 blue; 10 blue, 7 red, 2 green; 7 green, 16 blue, 4 red
+Game 90: 1 red, 1 blue, 7 green; 7 green, 1 blue, 8 red; 3 red, 1 blue, 1 green
+Game 91: 1 green, 2 red, 6 blue; 4 green, 4 red, 3 blue; 4 red, 11 green, 4 blue; 3 blue, 5 red; 8 green, 2 red, 8 blue
+Game 92: 2 red, 3 blue; 3 blue, 2 green, 2 red; 9 red, 3 green
+Game 93: 2 blue, 5 green; 2 green, 5 blue, 3 red; 2 green, 5 blue, 1 red; 7 blue, 4 red, 9 green
+Game 94: 1 red, 9 blue, 14 green; 6 green; 2 blue, 11 green; 4 blue, 16 green, 1 red
+Game 95: 10 green, 2 blue, 7 red; 4 blue, 4 red, 6 green; 3 red, 2 blue, 3 green
+Game 96: 12 red; 3 green, 10 red; 6 blue, 14 red, 2 green; 7 green, 15 red; 3 green, 3 red, 1 blue; 5 blue, 1 red
+Game 97: 3 red, 1 green, 1 blue; 1 green, 3 red; 4 red, 1 green
+Game 98: 4 red, 5 green, 6 blue; 2 red, 9 green, 6 blue; 2 blue, 11 red, 14 green; 6 green, 4 blue; 11 blue, 11 red, 8 green
+Game 99: 2 green, 20 blue; 12 blue; 3 red, 12 blue; 7 blue; 3 green, 10 blue, 2 red; 3 red, 2 green
+Game 100: 2 blue, 8 green, 12 red; 2 green, 13 red; 2 red, 4 green; 2 green, 7 red; 10 green, 5 red, 1 blue
diff --git a/2023/day2/src/lib.rs b/2023/day2/src/lib.rs
new file mode 100644
index 0000000..e18469c
--- /dev/null
+++ b/2023/day2/src/lib.rs
@@ -0,0 +1,99 @@
+pub fn part1(input: &str) -> u32 {
+ let mut res: u32 = 0;
+
+ for (i, line) in input.trim_end().split('\n').enumerate() {
+ let game = line.split(": ").collect::<Vec<&str>>()[1];
+ let mut flag = true;
+ for point in game.split(";") {
+ for _play in point.split(',') {
+ let play = _play.trim();
+ let play_s: Vec<_> = play.split(' ').collect();
+ let (p, c) = (play_s[0].parse::<i32>().unwrap(), play_s[1].to_string());
+ if c.chars().nth(0).unwrap() == 'r' && p > 12 {
+ flag = false;
+ } else if c.chars().nth(0).unwrap() == 'g' && p > 13 {
+ flag = false;
+ } else if c.chars().nth(0).unwrap() == 'b' && p > 14 {
+ flag = false;
+ }
+ }
+ }
+
+ if flag {
+ res += (i + 1) as u32;
+ }
+ }
+
+ res
+}
+
+pub fn part2(input: &str) -> u32 {
+ let mut res: u32 = 0;
+
+ for line in input.trim_end().split('\n') {
+ let game = line.split(": ").collect::<Vec<&str>>()[1];
+ // r, g, b
+ let mut balls: [u32; 3] = [0, 0, 0];
+ for point in game.split(";") {
+ for _play in point.split(',') {
+ let play = _play.trim();
+ let play_s: Vec<_> = play.split(' ').collect();
+ let (p, c) = (play_s[0].parse::<u32>().unwrap(), play_s[1].to_string());
+
+ let bi = match c.chars().nth(0).unwrap() {
+ 'r' => 0,
+ 'g' => 1,
+ 'b' => 2,
+ _ => panic!("wtf is this color?!"),
+ };
+
+ balls[bi] = if balls[bi] < p { p } else { balls[bi] };
+ }
+ }
+
+ println!("{:?}", balls);
+ let mut tot = 1;
+
+ for j in balls {
+ if j != 0 {
+ tot *= j;
+ }
+ }
+
+ res += tot;
+ }
+ res
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn example_part1() {
+ let input = include_str!("../example.txt");
+ let result = part1(input);
+ assert_eq!(result, 8);
+ }
+
+ #[test]
+ fn input_part1() {
+ let input = include_str!("../input.txt");
+ let result = part1(input);
+ assert_eq!(result, 2331);
+ }
+
+ #[test]
+ fn example_part2() {
+ let input = include_str!("../example.txt");
+ let result = part2(input);
+ assert_eq!(result, 2286);
+ }
+
+ #[test]
+ fn input_part2() {
+ let input = include_str!("../input.txt");
+ let result = part2(input);
+ assert_eq!(result, 71585);
+ }
+}