Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Day 15

advent_of_code/2023/day-15.livemd

Day 15

Day 15: Lens Library

Day 15: Lens Library

Input

input = """
rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7
"""

Part 1

defmodule Awesome do
  def run(input) do
    parse(input)
    |> solve()
  end

  def hash(list) do
    list
    |> Enum.reduce(0, fn n, acc ->
      algorithm(acc, n)
    end)
  end

  defp solve(list_of_charlists) do
    list_of_charlists
    |> Enum.reduce(0, fn charlists, acc ->
      acc + hash(charlists)
    end)
  end

  defp algorithm(init, n), do: init |> Kernel.+(n) |> Kernel.*(17) |> rem(256)

  defp parse(input) do
    input
    |> String.split(",", trim: true)
    |> Enum.map(&(&1 |> String.trim() |> String.to_charlist()))
  end
end
Awesome.run(input)
puzzle_input = """
mgm-,sm-,fbz=7,zbknc=8,ljmtr-,jxcxv-,cr-,dqdnv-,gsjql=4,gbbg=5,fch=3,dqjb-,tgbh-,klb-,xkx-,qxj=4,ddj-,mpql=6,vxg=2,xnph=9,spg=1,jtjrgh-,ss-,mv=8,vl=3,jxq-,xmz=7,sx=9,jjzcc-,mr-,fmj-,drppl=3,mtg=1,jgf=4,qm=2,dlt=8,knzz=9,ld=2,ts=7,qdmmzl-,jt=4,mql=2,kqv-,jr=2,ndt-,lj=5,dgxlt=2,zdbkp=2,pgf-,tggq-,sbr-,cs-,xp=2,zqr=9,tm=3,vrp=2,sstfc-,nbjm-,qx-,gnx-,dtbs=6,vpmpp-,xg-,mzk-,tj-,zq-,pxd-,xlp=6,grjlg=3,sgxp=3,tshlkc=8,zqzvr-,xfx-,bgnv=6,gxtq=7,cs=7,lsn=9,vm=9,bl-,fjnl-,bgnv-,xkx-,xdnls-,bhgv=3,nfv=1,ldv-,rg=6,zqs-,lp-,jt-,qzbx=7,zz=7,cvc=4,zdbkp-,tt=9,knk-,bc-,qbkqr-,bfp=4,vmpnf=4,rxs-,fmj-,lq=7,jfdf=3,nrps=7,dm=7,qxr=9,xlnk-,pjcx=2,bjvfkc-,vfh=4,qxr-,bfs-,mrmsm-,xkx=7,knk=5,qfd=9,nfv=7,gxtq-,bv-,gzhkh-,nbjm=8,ldv=2,gd=2,kjrx-,hhvcd=5,prp=8,ssnnc-,fmj-,mzm=6,mrh-,prp-,jjzcc-,jzhk-,lgrt=2,gzhkh=6,clr-,qlcdx=7,thd=7,rsx=4,ncxd=9,gsjql-,cgh-,pxcq=3,rl-,zb-,cqqx=7,fch-,bgr-,sgxp=5,lmlh=8,gnjjnq-,dqn=1,pk=6,xfx-,bnvhql=1,tggq=7,vz=4,hh=7,bgx=6,vmpnf-,jpchxv=6,jtjrgh-,bl=2,gbkv-,qlgr=9,qfnx-,sp-,bnvhql=9,zrnvb-,qzbx=2,mgt-,dqn=8,ndt-,qf-,sbr=2,rk=9,zrnvb=7,lrz=7,vd=1,hvx-,lclz=7,jfn-,knk=2,khtv-,zqzvr-,sgk=7,pnt=8,dmxm=3,nbjj=9,dlt-,kq=2,lxh=3,gzz=1,kjgt=7,znfg=2,kjgt=3,jsn-,dmxm=9,qhskfz=5,jc-,tjh-,pbv-,bf=8,mq=3,ssfcts=8,bfkn-,xph-,txf=8,ttsvp-,ds=1,dn=6,vmt-,ddpjm=1,ng-,bplj-,hhvcd=3,bbrm-,jv=8,pgv=3,qfd=8,sstfc=4,mfln-,mq-,jnkgx=5,lt=8,fzj=7,flf=5,pnt-,qfd-,ddgh=4,zrv-,xcc=3,kd-,ldv=4,kfp=2,scpp=5,fg-,dzc=4,cd=7,px-,cs=7,vl-,cz=8,qv-,xpj=4,ncs-,zrv-,qgd-,vxdl=7,lg-,lvp=9,rlghv=5,mzm=3,kxbmk=5,xkx-,xdt=9,qqg=1,ppcv-,bmh=8,vpmpp-,qm-,kc=4,drppl=6,nj=1,gbbg-,jvsm-,gssbg-,pltfhv=4,hd=4,txf-,lp-,fmx=5,nbjm=9,ddtn-,blt-,zjh=1,hmq-,ptt=8,xgk-,ncs-,qpcf=9,ttc=2,fmj=9,fgn-,ncs-,srxx-,nh-,gs-,xdnls=2,xpj-,bhvn=8,dfn-,vxdl=6,vrp=8,nt-,jl=4,dts-,xn-,jtd-,pbv=9,jsn=7,lm-,kjrx=4,pq-,gxtq=3,mclm-,xgk-,mrmsm=8,jd-,ff-,sxp-,cxd=2,scpp=5,trmb-,rxs-,nt=1,fmj-,qlcdx=2,srjhn=4,cs=4,dgxlt=6,jzhk=7,qjjn=6,bv-,ddgh-,bx-,qhskfz=3,jr=4,qdmmzl=5,vxj=8,xfx-,jdjq-,jnk-,khtv-,gvb-,kj-,dvt-,thd=7,ng-,dzfbl-,kd=9,vcb=6,srxx=6,nrdg-,bfp-,xkx-,sx=7,nnjm-,hsb=2,lts=2,lts=3,qgd=6,krh-,dmq-,fmx=5,gn-,jxcxv=7,dtxx=3,fzj-,gssbg-,qdmmzl-,lqj-,pbv=3,vm-,lrz=7,fjnl-,cd=2,ppcv=5,bvr=7,hd-,jx-,dn=3,jbsgz-,srxx-,zqr=9,kd-,bgr=9,qprvjn-,dnpc-,rht-,gsjql=5,cx-,kvn-,gd=9,tv=9,qgd=9,mgt=9,sm=3,znfg-,rjd-,vfh-,xjb-,xp=1,scpp-,vnl-,bjvfkc=2,fc-,nd-,bv-,pk-,zx=6,pbv=6,mf=7,hfg-,lmlh-,hzxj-,nx-,mv=5,kcq-,vxj-,sqtr-,xg=9,lv-,cz=3,frpcdk=3,cqqx-,pskvh-,fmj-,lvp-,fbvbp-,dn-,ssnnc-,mgpk-,clr-,tmm=7,mrh-,tg-,zhcxr=3,fbq-,qlgr=1,xpv=1,zmksg=3,lmlh=2,jlk=8,xljgjv=6,lp-,fr=4,lq=5,dvt-,pzj=5,fmj-,zmg-,sbr-,kchv=1,ngdhzj-,nj=6,nnjm-,mzk=9,dtm-,qz-,qm-,mfln=7,bqr-,vg-,mpplf-,xt-,qfnx=3,fch-,rpvrxm=8,pnt-,ssnnc-,zbknc=2,gzz=9,tqqpt=7,vd-,cms=4,jrg-,pz=6,xq=8,pskvh-,ttsvp-,knk=9,dm-,ztr=5,mn=1,bl=2,mzk=8,qqg=3,vk=7,zrt=7,jfn=5,bx=9,bgnv-,qdmmzl-,dmxm=6,ng-,hkz-,dzc-,hfg=5,mr-,chd-,dtxx=9,vmt=9,zjh-,vj=2,fbq=4,lp-,qgd=7,jfn=5,px=2,zs=4,dvt-,rjd=3,mpb-,px=5,lkc-,mt-,vf-,zrv=5,rjlb=6,xz-,njb-,sm-,nkv-,rm=4,hqs-,vj-,gd-,gs=4,pgv-,lx-,xr-,hmq-,kxbmk-,lsn=2,gnx=5,lts=3,mfj=4,xgnzcq-,xjb=9,mv=5,zpj=6,bfp=8,hkz=8,tshlkc=6,rlvbc-,ncfzvr-,zc-,nh=8,sx=8,bx=4,gl-,mjq=6,mf-,jvsm=8,ddj-,scpp-,dsj=1,bfp-,cxd=2,jf-,fsds-,cnh=4,dtm-,bv=8,bplj-,mn-,jsn=8,jzhk-,pz-,rlghv-,rr-,vk-,vrp=6,ht-,sgxp-,ns=2,qprvjn-,xdnls=9,fgn-,jsn-,bq=7,fl-,vf=8,dsj-,fjnl-,cqqx-,frpcdk-,xdt=3,df=2,ls-,jd-,vpmpp-,hg=6,lrz=4,vnl=7,vxg-,zv=7,fpts=1,gmhzz-,rxs=2,lx=2,cn-,vgj-,rpvrxm=8,qhskfz=6,dqdnv-,jr-,clr=5,lbk-,bd-,zrnvb-,mgm=5,jvc=1,xh-,vl-,lkc=7,vmt=2,pl=9,mvd=3,lcvj-,pzj=8,kppb=7,blt=7,vm-,fr=9,jfdf=8,mpql=2,bd-,bvr=4,nbjj=9,bfs-,jn-,lsn-,fmx=1,gx-,xp-,txf-,nz=8,xljgjv=1,qc-,cn-,djx=8,qj=1,mfj-,rl-,qsh=1,jp=5,bmh=6,klb=2,cl-,rpvrxm-,bmh-,jxq-,njd=1,mt-,tggq=4,xljgjv=1,lts-,pskvh-,vfc=7,rzt-,grjlg=4,vd-,ts=7,pbx-,mn=7,cr=2,ddpjm-,ncxd=8,spg-,jb-,fg=5,jjzcc=5,jrmt=7,nz=8,dqjb-,jxq-,sgk=7,zll-,vl=4,gmt-,dst-,xdt=8,lq=2,xcz=4,gzz=8,qlcdx-,ttsvp-,tv=3,pskvh-,ddp-,xgzc-,dfn=5,vfc-,hhvcd-,ldv-,vl=9,ddtn=7,dzc=7,dqdnv-,gzz-,scpp=1,pk-,kxcgb=4,jdjq=5,qxj-,vct=3,cfc=1,lmlh=9,pbpl-,xcz-,xn-,qqg-,ddj=8,kjgt-,mjc-,xrv=2,qfnx-,rxnz=5,rjlb-,pzzt-,jtrvtb-,gs=9,rl-,pgv-,zmc-,xkx-,cd-,cz-,jjzcc=4,bjp=5,vk=3,gxbv=8,bc=1,lq-,ddtn=5,srhkp-,zs-,pg-,lmh=9,pq-,pfc=8,fq-,klb=4,nj-,hzxj=4,cqqx=4,kcq-,xpv-,jxq=5,rm=4,rhggt=5,ljmtr=6,cn=5,kfp=9,pskvh-,jxnmm=9,nfv=7,qrn=4,klb=4,hmq-,nbjm=8,tqqpt-,gm-,bl-,clr=1,kc-,df=5,fbz-,sfr-,gsjql=8,zrt=6,dqn-,tm=9,mn=2,tmcz=7,mxd=5,jp-,jnkgx-,mql=7,xcz=7,svhv=7,qz-,ddj-,zdbkp-,fdlx=4,khtv-,dv-,pltfhv=7,qs=3,tgbh=3,gzhkh=5,vg=2,gbm=7,xlnk-,jddl=5,qpcf=5,jt=4,mtg-,bd-,lqj=6,rpvrxm-,vfc-,bh-,kcq-,mv-,gs=5,jqrrsx=5,xnph=7,lrz-,ftkfk=5,rhggt=6,ddgh-,zkpv=1,gbbg=6,vxdl-,xdt=9,hscff=7,mzm=2,cxd-,nt=2,zdbkp=1,gbbg=9,vct-,dtxx-,dqn=2,mpql-,gbkv=9,gmt-,ndd-,ps-,ps=8,djx=2,kjgt=2,vjn-,jvc-,lvp-,bfp=8,fbvbp=9,qm-,fc=4,qrc=5,lt=4,trtp=2,zrnvb-,qr-,zkpv=2,vct-,hfg=9,xr-,qsh=5,qhskfz=5,vfh-,gvb-,hh=4,gnjjnq=4,bjvfkc=1,krh=8,glq=2,mfln-,kxbmk-,tmcz=2,kppb-,lmlh-,pph=2,xgzc-,zd-,zjjv=9,vl-,jdjq=3,xgnzcq-,ssnnc-,bgx-,bc=7,nrdg=9,xqc=1,sx-,prp=1,qz=4,svp-,jp-,fzj=6,lp-,jzhk=9,tm-,xlp=7,jlk-,gs-,fmj=4,nj=2,rjd=1,dzc=5,fbvbp=2,zrnvb-,sm=5,dts=1,lmh=5,mxd=5,khtv=2,dst-,lts-,cgh=5,mpb-,mpplf-,ndd=8,ttsvp-,vmpnf=6,jr=7,ppcv-,gvb=6,ncxd-,vxdl=5,jdjq=3,qj-,hhvcd-,fjkhx-,qdmmzl-,hh=2,fbvbp=9,rd=6,ddj-,fmj-,kj=5,thd-,pgv-,vpmpp=9,zrt=1,hs-,fxnf=8,vrp-,ndt=2,tjh-,bx-,bnvhql-,txf-,vcb-,hcl-,rd=9,kchv-,mql=7,qr=4,tj-,qlcdx=6,vcb=7,bjp=1,pg-,glq-,jr=6,kgrm=9,xt=4,qv-,sxp=1,xrv=1,cqqx-,hd-,ksh=2,sj-,cr=9,fgxx=6,xst-,hvx=8,rsx=6,ngdhzj=9,thd-,sqtr=1,ncs-,bfs-,px-,jnkgx=1,gssbg-,pgf-,ndt-,lclz=9,tv-,rk=4,gxtq-,qprvjn-,vkqjlk=2,rz=2,flf-,scpp=9,bx-,zmg-,xhh=9,njb=7,lkc-,qp-,khtv-,fzj-,txf=5,glq-,qj=7,fzj=1,prp-,xfx=7,jdjq=4,dnpc-,fs-,rz=3,nmz=6,ttsvp=9,vl-,rr-,nq=4,vxj=6,qhjpfl=9,hkz=1,bv=8,gbkv-,dst-,jrmt=4,xph=3,cgh-,xnph-,rm=1,jl=9,jtrvtb=5,xpc-,bc=3,tqqpt-,zqr-,vxg=4,vmt=8,rm=8,cms-,qz-,ncxd=7,xnph-,kc-,zs=8,pzzt-,jqrrsx=1,kq=8,mrmsm-,nkv=3,jbsgz=6,mql-,kxbmk-,cfsmm=3,dtm=2,dts-,kqv=9,dd-,bh=8,tg-,lkc=2,rhggt-,mg-,bqr=6,fsds=6,srhkp-,lvp-,qlcdx-,gnjjnq=7,jqrrsx=1,gm=4,jfdf-,nbjj=1,mk-,xn-,tjh=6,vcb=2,dvt=4,dvt=6,xpv-,nrps-,sstfc-,ptt-,zg-,pnt-,mgpk-,hkg-,lkc-,rxs-,jr-,qgd=8,dgxlt-,mjc-,ld-,kn=5,xpc=5,xg-,fc-,dlztf-,hzxj=1,gnjjnq=6,jtrvtb=9,xhh-,zv=9,mjq=7,cvc=1,svhv=7,mgpk=7,zczxrf-,jvc=2,tshlkc=9,qgd=4,rdz-,qr-,djx-,ndt-,lv=3,zqs-,lx=2,nbjj=8,lhtx=9,hbv=3,dzc=3,sp=3,qf-,zmg=4,zrv=9,lmh-,vl-,kx-,gzz-,qsj=6,lg=8,tmm-,flf-,sg=7,zmc=9,qprvjn-,nxrqm=3,mv-,fgn=5,ds=7,dtpf=8,sp-,knk-,pz-,sx-,bq=8,pbv-,lmh=4,pzj-,bjvfkc-,hgh=9,xh-,rr=1,gbh-,bjp=9,krh-,zz-,nhzz-,gbh-,xlp-,vj-,qv=5,ppcv=4,fmj-,lrz-,vpmpp=3,vrb-,qfnhmn=2,fbq-,bfkn=3,xcc=9,mgt=7,qx-,jzhk=2,bhvn-,hsb-,vj=1,gnd=9,vrb=5,zx=8,bfp-,kjgt-,xlp=4,cx=8,xh=4,qp-,qxr=7,kxcgb-,rl=5,sgxp=7,hg=3,jvc=7,qlgr-,lmh=2,px=6,vcb-,ddgh=8,nbjm-,vmpnf-,dfn-,ppcv-,xpv-,xpc-,jx-,xst=4,lcvj-,kchv-,knk=3,zjh=9,frpcdk=9,fsds-,srjhn=1,qprvjn-,lq=8,qdmmzl-,csz-,rxnz-,xgnzcq-,dqjb=9,zdbkp=4,rxs=1,tpr-,vgj=3,jvsm=3,hkg-,jfn=5,vct-,zg-,qsh-,xdnls-,cr=4,sgxp=9,tzgh-,rg=4,lgrt-,sgxp=9,xz=3,qxj=2,mn-,zs=3,qx=7,sstfc=6,gmt=1,gnd=2,krh=4,kc-,zrnvb=3,fl-,dd=5,rd-,dzc-,bd=8,pgv=5,xpc-,xpj-,cgh-,bgr=1,rht=5,njpz-,qfnhmn=9,mv=4,cvc=1,mg-,xqkp=9,qhjpfl-,rg-,pfc=3,xfx=4,nbjm=9,rl-,lxh=5,bnvhql=9,vfh-,dlztf-,fmj-,vm-,dqdnv=9,pz=1,jl=5,xgzc=8,mzm-,vg-,knk-,qc-,ldv-,mxd-,rht=4,qgd=1,qm-,knzz=5,zmksg-,jtjrgh=7,jd=7,bc=5,ddpjm=3,jtrvtb-,jjzcc-,ts=5,tzgh-,xr=5,gssbg-,xpj=9,zll=9,jpt=4,df-,njb-,mn=3,gs-,fxnf-,pgv=8,scpp-,zq=3,pxd=5,gsjql-,qb=4,rd=2,lrz=3,ld=1,mr=4,xlnk=7,dlztf-,rxnz=2,qjjn=4,cqqx=4,cr-,lkc-,rm=5,rjd=8,lm=7,mfj-,rlghv-,zz-,bbrm-,ngdhzj-,hd-,vd=1,xrv-,pxcq=7,pf=3,qfnx=7,rr-,zd-,qlcdx-,qfnx-,zjjv=9,jvc=1,lv-,lts=9,qh-,rdz-,sstfc-,ns=2,lqj=6,dlt-,mjc=8,vfc-,cr=9,jd-,jhzj=4,vmt=2,xljgjv-,pltfhv-,dzfbl-,qm=5,pgv=8,qsh=2,ngdhzj=7,mgr-,vfc-,jn-,nfv-,qg=9,sgk=3,txf-,xcz=5,kxcgb=8,bqqf=2,zrv-,lmh-,hbv=7,zqr-,csz-,cfc=8,fzj=9,pq=9,dnpc=3,sgxp=9,jrg-,dnpc=3,rjd=2,cr-,fs=6,bd=2,xcz-,kh-,bhgv-,jtd=7,zbx=9,vm=9,dn-,nnjm=2,vfh-,hkz=6,gssbg-,px-,xlnk=3,vct-,tm-,fg-,sstfc-,pnt-,trg=9,jddl-,mql-,ss=8,cnh-,xb-,btb-,ncx-,ddj-,srjhn-,svhv=8,cs=3,lq=1,vcb-,bf-,vl=2,xt-,xb-,fch=4,qsh=5,ljmtr-,kcq-,mvn-,ljmtr=1,lt=1,jzdxkj=5,ttsvp=3,knzz=2,qprvjn-,mfj=5,pfc-,dqjb-,ttc=7,gzz-,gzz=7,jzhk=2,fjkhx=9,qzbx-,lhtx-,kchv=2,qx=8,bbrm-,cgv-,qzbx-,mk-,gn=8,vz-,jtd-,tqqpt-,zhcxr=7,zjh=6,vkqjlk=8,rz=1,hmq-,zrnvb=7,cg-,tzgh=6,xr=6,qsh-,qrn-,lcvj-,vct-,tpr=8,zb=5,cms=3,vjn-,pgv-,xkx-,jb-,mgm-,xst-,mgm-,sp-,lbk=3,lmlh-,hh-,cnh-,hkg=7,dst-,xpj-,cr=7,nrps=1,vrp=3,ddgh-,jdjq-,xpc-,nmz-,xph-,zffl=6,mvn-,rhggt=7,jzhk=7,zkpv-,jv=6,tggq-,px=3,xph-,jc-,pskvh-,cd-,ljmtr=4,mgpk-,sgk=1,mvd-,chd-,lrz=7,dzc=1,nzq=8,qlcdx-,ncs=3,xrv=6,rjd-,ppcv-,fch-,vcb-,knk=4,jfn=2,mzk-,qpcf-,gsjql-,qh=2,ngdhzj=6,kxbmk=3,jtjrgh-,njpz=4,gnjjnq=2,spg-,xcz-,ttc=9,bc=2,rd=3,qz-,pf-,tg=8,pltfhv-,hhvcd=2,zhcxr=5,lcvj=7,mfj-,pbx-,qh-,rzt=3,xr-,xt=7,ppcv=4,rlghv=8,lp=7,gnx=5,xmz=1,pxd-,jsn-,gnx-,hs=5,fch=3,jpt-,hscff=6,cgh=6,cn-,tmm-,jtrvtb=6,hclp-,zq-,vl-,dm-,mn=9,jpchxv=2,xpc=7,lqj=7,rsx-,ld=8,zb-,qprvjn-,rxnz-,kvn=4,fq-,pxcq=3,bmh-,dmql-,jzdxkj=3,jpt-,zjjv-,lg=5,sg-,jbsgz=2,mq-,ngdhzj-,ds-,rcqj-,jlk-,qg=6,qfd=7,bhgv-,pz=6,trg=9,bmh=7,xqc-,cxd-,fch-,nh-,lhtx-,srxx=8,sjln=5,tv=4,vcb-,cd=2,prp=8,sbr-,ng=4,trtp-,gs-,mpplf-,vmt=8,kvn-,ff-,bq=8,vgj-,jrg-,qzbx=7,cvc-,ssnnc=2,nj=7,tv-,tm-,fmj-,jt=4,xljgjv-,zd=2,qsh=4,jt-,br-,fr-,zb=6,cg=4,zg=5,qhskfz-,qz=2,gnjjnq-,fgxx=5,dzfbl=3,vf=7,jp-,mvd=6,dtxx=8,xlnk=8,glq=5,jb-,blt-,nfv=1,kxcgb-,mclm-,lp=3,gssbg-,jt-,jn-,pxcq=5,zqzvr-,hcl=6,vxj=2,kj-,ls-,dsj=5,hbv=7,vk=4,fjkhx-,kchv=1,cx-,xgnzcq-,nbjj=4,ddpjm-,nphm-,zjh-,bnvhql-,ddgh=5,jxcxv=8,jnk=2,lxh-,lhtx-,hvx=2,lgrt=7,cz-,vjn-,hkz=8,pgf-,zc-,fd=2,jjzcc=8,tgbh-,bl=1,glq=2,zs=8,mrmsm-,zczxrf-,scpp-,zbx-,qc-,xph=4,bgr-,dst-,tt=8,lsd=7,nd-,njpz=9,flf-,nrdg=3,bbrm-,qp-,xdnls-,jlk-,jc=5,xgzc=4,vct=1,vrb-,jtrvtb-,jf-,mrmsm=9,sstfc=8,vm=1,jb-,mgt=4,pq-,dqn-,ns=8,mjc=4,xjb-,dmq=6,pg-,txf=8,sbr=3,lmh=4,jr=4,jb=2,mrmsm-,mzk-,zmg-,jzhk=2,ttc-,qzbx=5,xrv-,vmpnf=9,hlqfs-,rpvrxm-,gbkv=9,pxd=6,pzj=6,dfn=2,bqqf-,ddtn=6,fsds-,sfr=6,mql-,xq-,tv=6,gmt=8,lm-,dtxx-,mgr-,kppb=4,jddl=4,sm-,nrdg=7,bplj=3,jpchxv-,txf=9,flf=9,pfc=9,bl=7,dd=4,sstfc=8,qj=7,tzgh=4,sstfc-,krh=5,xdnls=3,rpvrxm-,cpjf-,qh=8,xcz=4,lsd-,jjzcc-,gzz=2,xgk=1,mfj=7,pbx-,vd-,knzz-,mgr=4,pjcx=9,lsn-,ftkfk-,gxtq-,srxx=5,ddp-,qz=5,cs=3,vfh-,zkpv-,nxrqm-,jtjrgh-,xcc-,kjrx-,cd-,gd=8,ppzxdm-,bjvfkc=1,zd=7,dv=8,nbjm=1,qh=8,fch=8,nmz=1,zrv=4,dgxlt=7,xrv-,qbkqr=3,fmx=2,gbkv-,rr-,pjn=5,hbv=4,spg-,vhck-,jddl=3,jxcxv-,cms-,jkf-,jnkgx-,zbknc-,jddl-,pf=6,hcl-,vmpnf-,jzhk-,kcq=4,zq=1,ddpjm=1,vnl=4,vk-,vf-,ng-,zkpv=4,bbrm=2,xpj=5,hg=5,lmh=7,tt-,dzfbl-,rpvrxm=2,bvr-,txf=9,dqjb=7,thd=1,kppb=2,ttsvp-,pgv=2,nd-,kcq=6,kchv=1,srxx-,mfln=1,xqkp-,zd-,jgf=3,lsd-,bqqf-,drppl=8,dlt-,qfnhmn=7,tpr=1,rl-,vrb-,blt-,bvr-,xdnls=9,btb=1,xr-,lbk-,fbvbp=2,zjjv=7,mpql=7,ls=5,ncfzvr=7,dtm-,gnjjnq=8,lkc-,pgv=6,xjb=2,dzfbl=1,vkqjlk=4,ndt=4,gs-,sg=6,pbpl=3,mpplf=5,fmx=5,hqs-,dtm-,mgm-,xq-,dtpf=8,kchv=8,df=1,vmt-,px-,kjrx-,rht-,dvt-,qh=4,cgh-,mt=1,ldv=1,lq=9,rcqj=8,fd-,xlp-,dvt-,lclz=8,ds-,mpb-,xgk-,nphm-,gmhzz-,rxs-,klb-,knk-,kppb=6,xpc-,xdt=3,bgr=3,mgr-,bfp=6,lvp=9,jt-,mv=8,zs-,rdz-,bgr=3,trg-,vk-,zqr-,nfv-,sj-,dzfbl-,vj-,jr=1,ppcv-,cpjf=1,fpts-,pbv-,kgrm=8,cgh-,bx=3,hg=6,srhkp=4,fmx=4,lcvj-,dts-,vnl=6,dm=5,gzhkh=7,vmt-,srhkp-,bhgv-,ss=1,kjrx=1,qfnx-,cxd=6,kxbmk-,cvc-,xb=6,bfkn-,xpc=4,jc=4,dqjb-,pzzt-,lt=6,sgk-,cnh=8,ljmtr=9,qv=2,ss-,kd=7,mgt-,zbx=2,jp=1,hvx-,zbknc=1,sfr=6,lcvj=8,xcz-,nzq=3,fjnl-,nrdg-,kh-,gzz-,xn-,kcq=6,qs-,fgn-,bq=8,bbrm=6,bl-,gzz=4,bgx-,hsb=6,mjc=3,scpp-,qm=7,pgf=4,ttc-,gbbg=8,hvx-,hbv=6,dmxm-,lrz-,gzz=4,ssfcts=4,vnl-,grjlg-,qf-,br=1,hsb=3,fpts-,qbkqr-,lq=5,jzdxkj=4,klb-,tzgh-,ldv-,ddp=2,rcqj=2,gbbg-,ppcv=6,qsj-,sxp=7,jbsgz=3,knk=5,zrt=4,bjvfkc=8,bjvfkc=4,srhkp-,mgpk=7,pf-,bd-,vmt=4,bh-,trg=4,khtv=7,qrc=3,ndt=8,tg-,bgnv-,ts=4,khtv-,dmql=3,tfg=3,mfln=4,lt=9,mq-,qz=1,znfg=2,rht-,qzbx=7,xqc=6,vpmpp-,mxd-,krh=5,tt=9,xph=9,tgbh-,nfv=9,dmql=8,jn-,lrz=1,kgrm=9,mr-,csz=4,jd-,nt-,lmlh=3,pfc-,zbx-,rd-,mr=1,ftkfk-,mgr-,xlnk=6,zbx=1,dtpf-,pph=8,pbpl=6,lt-,trmb-,zmc-,vxg=4,qpcf-,zmg=7,jdjq-,xz-,gx-,jtd-,qfnx=1,cvc=8,zll-,tpr=2,dzc=9,tmm=8,rsx=6,vkqjlk-,glbv=8,hbv=4,lsn-,xdt-,trg-,qf=9,xph=7,dtj-,mtg-,rjd=7,vnl-,jkf=9,bfs-,zz=5,jfdf=4,pph-,vgj=6,kd=5,znfg-,dgxlt=3,zpj=6,fmx-,pg=4,jl=7,dmxm=2,kjrx=6,hkz=2,tjh=4,dtxx-,bgr-,gn-,dtxx-,jb=1,xpj-,vrp-,frpcdk-,zkpv-,scpp=1,bhgv=6,clr=9,bjvfkc-,xpc=6,dvt-,zq=8,mpplf-,xhh-,cn-,vxg=8,fdlx=7,rg=7,zmc-,trmb-,dzfbl=7,tm=6,tt=8,svp-,mv=5,dn=9,fxnf=5,xg-,bv-,rm=4,jp=7,fjnl-,bh=4,jdjq=7,px=4,kj-,mgr=5,fch-,lclz=3,qrc-,vl-,jddl=1,qsh-,lj-,zrv=8,cn=3,bfp-,bd=2,jvc=2,zbx=7,zrt=2,cxd=2,pf=7,vd=9,khtv-,qsh-,lmlh=1,hscff=2,mrmsm=5,zq=1,xpc=1,cxd-,pskvh-,fq=2,cfsmm=4,lsd-,lmlh-,fzj-,xlp-,ldv-,xgk-,vj-,jrg=8,jzdxkj-,dm=6,krh=8,xgk=6,ttc=4,lt=9,glbv-,pjcx-,njb=7,rcqj-,ldv-,ztr-,rdz=6,vmt-,knk-,ts-,pskvh=4,kjrx-,cqqx=5,zqzvr=3,bjvfkc=3,sg=3,rht-,bgnv-,hg=4,bqqf-,bh=4,dtm=1,bvr=1,ps-,jf=7,lt=1,tqqpt=5,btb-,dgxlt=9,qdmmzl=6,pf=8,jtd=2,tj=3,fpts=6,mjq-,fch-,zqs=6,pbx=6,lqj=5,nt-,qr=4,pph-,rm-,knk-,qhjpfl-,xn-,lmlh=2,jfdf=9,hcl=9,pnt=7,vrp=9,nrps=5,cr=1,fch-,jfdf-,pltfhv=4,sg-,svhv=3,znfg=9,jl-,zs-,nq=2,jtjrgh-,gnx=7,mjc-,mrmsm=5,hhvcd-,hs-,sstfc=8,jnk-,xgzc-,hclp-,hg-,xgk-,fgn-,xn=9,zqs-,zczxrf-,mt-,kc-,vcb-,rr-,qrc-,qm=2,zdbkp-,txf-,xg=5,flf-,dtxx-,mpb-,xdt=9,pbv-,nbjm=6,rd=5,mt=3,pbpl=4,nfv=1,vkqjlk=2,mfln-,hd-,zjjv-,qhskfz=3,bfp-,zjh=7,jl=9,zdbkp-,nnjm-,jddl-,mpb=1,srjhn-,jc-,bfs-,dsj-,zd=3,jfdf=7,mtg=4,zq-,fr=9,bl-,dmq=3,scpp=9,fsds-,pltfhv=5,vcb-,hcl-,krh=4,ddtn-,rjlb-,vg=7,bq=4,mfln-,clr-,sxp-,pl=5,rxnz-,kh-,rlvbc-,ddpjm=7,rjlb-,zmc=3,rdz=7,vm=5,bfkn=9,xj=3,zx-,jkf=1,zbx=3,cr-,sgxp=5,zqs=5,rlvbc-,lmh-,vxj-,xljgjv-,fbvbp=7,jfdf=9,jsn=2,xh-,rm=1,vgj=3,mql-,rlvbc-,mpql=3,zv=7,qjjn=7,qgd=8,kfp=3,lgrt-,fzj-,jqrrsx=4,nfv=9,xhh-,mgr-,zc-,fbvbp=3,cgh=4,cvc=1,jdjq-,qc-,mq-,mtg=1,btb=9,px-,bmh=9,kd=4,dgxlt=1,dn=7,lqj-,lx-,vxj=3,vg=2,qxr=1,zhcxr=7,trg-,zqs-,ncfzvr=1,gvb-,bq-,sjln=7,scsc=8,ht=4,sm-,jpchxv-,mvd=9,zffl-,qxj=9,mzk=7,lmh=1,srxx-,flf-,xcc=1,xnph-,ng=7,xcz=5,mg-,ngdhzj=5,kjgt-,bmh-,dv-,gxtq-,bgnv-,vmt=2,cs=2,hkz-,gnd=8,lj-,zqs=5,txf-,jv-,dd=7,rsx-,vrb-,zrt=6,ps-,jv=7,mpql=1,ksh-,pbpl=5,fch-,ndd=9,kc-,zbx=4,zx=5,bqr-,mzk=2,sjln=3,lrz-,kppb-,nkv=2,xgzc=5,rjd-,hsb=9,jr-,lvp-,xqkp=9,glbv-,jgf=8,zdbkp-,mzm-,pf-,jbsgz-,mq-,ddtn-,zd-,clr-,xr-,xnph-,lqj=3,pbv-,zs=7,vj=6,tpr=5,ddtn=2,nbjm-,fd-,qgd-,lg-,ftkfk=4,lgrt=8,zc-,klb=9,dtpf-,cn-,dvt=6,jpchxv=9,ps-,xgzc=8,rlghv=9,xjb=9,kxcgb-,dqjb-,xgnzcq=5,ndt=8,bc=3,jrg=1,nnjm-,ssnnc=5,nd=2,kjgt=8,ppcv-,ljmtr=2,jl-,qhskfz=6,gbh=3,dn=5,qfd-,xg=7,jnkgx=5,qbkqr-,zczxrf-,pjn-,xkx=8,cms=1,flf=4,pq-,jvc-,gnjjnq=9,mfln-,zczxrf-,vj=2,jzdxkj-,mg=1,bgnv-,nd-,qv-,mt-,lqj-,jnkgx=9,gl-,mgr-,ncxd=4,hs=2,qsh-,knk=1,bfkn=5,lg-,nfv=7,drppl=1,hscff-,prp=1,jd=7,zczxrf-,blt-,scsc=2,zjjv-,kvn-,ns-,jsn=1,qqg=8,ns-,jtd-,zmksg=3,dsj-,hg=6,sqtr-,dqn-,xh-,rl-,ddtn-,jdjq=5,zqr=9,bx-,zdbkp=8,ssfcts-,lvp-,hgh=1,tfg-,sgk-,zdbkp-,bf=3,rzt-,qfd-,tggq=1,gsjql=1,cms=5,blt-,ds=6,xpc-,gn=6,gbm-,qlgr-,fch=8,dqdnv=3,dlt-,pjn-,zd=1,gzz-,vrp-,qfnx-,vct-,dv=7,mgt=4,sbr=4,pbpl=3,mgt=5,mtg=5,xlnk=9,jb=3,xcz-,bhvn=4,bgx=4,ppzxdm=2,cs-,pg=6,vcb=8,sp-,svp=1,qf-,kq=6,jsn=7,qprvjn=4,qb=5,ssfcts=4,qhskfz-,hg=6,nzq=7,rdz=4,vnl=3,pxd-,fzj-,lcvj=7,fl-,pk-,gbm-,lv-,jx=4,cms=7,mvn=9,xdnls-,kqv=1,vd-,xqc=2,xfx-,jfn-,zll=1,jnk-,ht=9,bjvfkc=2,hg-,qfnhmn=8,xmz=1,mjc-,rcqj=4,gbh=3,mgpk=4,fjkhx-,pjn=1,bf=2,qg-,qprvjn-,rjd=8,mf-,xq=9,pxd-,ljmtr-,xn=4,jtjrgh-,nhzz-,tmm=7,mjq=3,svp-,qc=3,zbknc=7,lhtx-,nbjm-,trmb-,ff=8,gnx-,ns-,grjlg-,xph=4,jlk=2,lsd=6,jkf-,ss=5,dts-,nrdg=3,pz-,sbr=5,xr=3,sgk=8,gxtq-,kqv-,vct=2,zlvd-,mql-,cqqx-,jrmt=9,zffl-,xpc-,srhkp-,srjhn=3,ddtn-,dn=9,xfx-,xn=4,gbm-,lkc-,hbv-,pzj=2,dm-,cs=1,nrps=4,pbx=4,vk-,jlk=2,fr-,zbknc-,mrmsm=6,cs-,hsb-,spg=3,xljgjv-,lmh=1,mql=3,qlgr-,hlqfs-,lhtx-,kxbmk-,mtg-,vrb-,mf=6,rm=7,zx=5,dvt-,mql-,jfn-,zqs=8,jc=6,gssbg-,rm=9,spg-,hmq=4,zd-,txf=5,dlt=5,qlgr=9,kjrx=8,qh=8,gsjql-,jbsgz-,kj-,rlghv=9,zrt-,rd=9,df-,bv=7,glbv-,qj=5,sgxp=6,prp=8,vnl-,fbz=5,jdjq=9,nzq-,mn=6,rlvbc-,txf-,prp-,gssbg=3,vm-,mpql=4,pf=3,ts-,qb-,fr=6,trmb-,krh=2,mpql-,qpcf=9,xt=5,qs=5,pph-,rlvbc-,fq=1,xg-,mpplf-,hkz=8,xljgjv=7,xqkp-,ppcv-,cpjf=6,mt=1,pgv=9,fpts=4,jbv=3,dd=3,jxq=8,nzq=8,ppcv=5,qc-,dv=5,bf-,tv=1,xnph=1,hd=2,mgt-,dqjb-,dd=2,pbpl=3,hg=3,scpp=9,lp-,vrb=2,dtbs-,thd-,jn-,vg-,gd=8,tmm-,fq=4,chd-,vrb=4,sqtr=8,tfg=4,jbsgz=8,sj-,zll-,gnx-,jx-,ff-,btb=1,ndd=9,kd-,dmql-,sfr-,vgj-,xrv-,lm-,zq=4,bvr=2,hsb-,lv-,jddl=1,kn-,hclp=4,gmt=8,nfv=2,cvc=5,cg-,mt=7,jnk-,mzk-,ff=3,zrt-,xt-,ljmtr=1,gnx-,fbz-,njd=8,ts-,gn=8,gssbg-,pjcx=6,jx=9,flf=4,njd-,qdmmzl=5,ngdhzj=5,vrb=2,hqs-,fc=4,nrps=4,srhkp-,vjn=1,njd=5,qjjn=6,gxbv-,zrt-,qg-,qrc=8,hmq=3,fd=7,xmz=9,hh-,bf=6,fxnf=4,gzhkh-,hclp-,sj-,cnh=3,jc=9,fpts-,xlnk-,ljmtr-,tm-,gbkv-,gzz-,dqdnv-,ts-,fmx-,zffl=5,zbknc-,tggq-,qfnhmn=7,hmq=6,chd=3,zmksg-,rzt-,zczxrf-,mv=2,sx=3,ngdhzj-,ss=6,mgm-,rpvrxm=4,xlp=3,jd-,pbv-,hscff-,ng=1,dn=8,hclp-,mfj-,nbjm=5,jn-,pph=6,cnh=5,fs-,dmq=3,jjzcc-,lclz=9,fgxx=4,dnpc=5,mjq-,gnjjnq-,srhkp=7,kh=4,vct-,ns=9,kc=8,fgxx-,bhgv=9,xg=5,vpmpp-,fmx-,lsd-,mk=2,dtpf-,nbjm-,scpp-,qjjn-,qbkqr-,frpcdk-,bnvhql=2,ldv-,qh-,jpchxv-,btq-,kx=7,ddp=3,xgk=3,jxcxv-,gzhkh=1,gm-,jr-,cgh=7,tjh-,ptt=9,khtv=8,zrt=3,jv-,xfx=5,jx=9,rht=4,bgx-,prp-,ns=5,gssbg-,vd=2,ppcv=1,bhvn=2,dvt-,ld=4,ncxd=6,xpc-,bh=6,dnpc=4,mrh-,fd-,nj=7,kppb-,bv-,fbvbp=4,xcz=7,mgr=1,vcb-,bjp=6,lqj-,bf-,nz=4,fpts-,kcq-,qhskfz=7,lclz=7,rz=2,ddpjm-,lp=8,mgm=2,mg=9,qxr=3,jd=6,lmh-,nbjm=5,gxtq=5,nnjm=7,zczxrf-,grjlg=5,fgxx=3,gbbg=3,xjb-,glbv-,xpc=9,mgm-,kvn=1,pxd=9,kjgt-,xgzc=2,pjcx-,hg=3,qv=4,cx-,gmt-,mzm-,djx-,dv-,gnx-,lhtx-,fr=7,chd=5,ppcv=9,chd=5,fxnf-,fr=6,lp-,gxtq=1,vz-,ttsvp-,dmql=9,lbk-,kjgt=4,nh=2,dsj-,dzfbl-,gm-,tzgh=7,bfs=2,gx=4,xdnls-,bjvfkc-,jtd=2,dtpf=6,gd=7,mrmsm-,qsh-,svhv=9,vj=4,xr-,hsb=3,fgn-,mtg-,vnl=5,qfnhmn=1,lvp=8,znfg-,xb=9,xb=7,qgd-,dtm=3,dqn-,ddpjm-,nphm=5,kfp=5,tt=9,jtd-,pzzt-,dn=6,ts-,svp-,rcqj=1,nmz-,cn=7,kchv=8,mclm-,ddgh=5,gnjjnq-,pg=6,vrb-,rhggt-,jzhk=4,xpc=7,fbq-,qgd=6,fgxx=5,nnjm=5,xph=1,ndt-,ppzxdm-,zmg-,mclm=3,lj=3,svp-,kchv=3,hh=4,jdjq=2,jqrrsx-,sgk-,lx=3,cms-,pltfhv=5,qrn=2,ncxd=7,vf-,fmx-,zbknc=4,lx-,jzhk-,qlcdx-,rcqj=6,bq=3,xqc=7,zrt=6,jbsgz=9,gd=2,jdjq-,njd=5,fbq-,qc=2,vrp=2,qrn=8,njb=4,jtjrgh-,vm=2,dnpc=3,dst-,lts=4,xr-,thd-,rm=7,lcvj=5,jvc=4,mjq=6,xrv-,qpcf=2,rdz-,vf-,svhv=1,fg-,jc=4,kd-,xr-,qlgr=4,dzfbl-,bqr-,mpb-,xph-,lts=8,xgnzcq-,chd=4,bj-,dtm-,fd=1,trmb-,fc=8,qhjpfl=3,ttsvp=3,ztr-,bjp-,lbk=7,ssfcts=3,sfr-,bgnv-,nhzz-,pgv-,vd=4,bhvn-,zv=3,bf-,zqs=2,bfp=4,qhskfz=2,trg-,qx=4,mv-,hkz=4,gnjjnq-,jxnmm-,xdnls-,fs=7,mvd-,bgx=5,qz-,gxtq=1,srxx=9,lmh-,kqv=2,mzk=4,cqqx-,gzz-,tgbh=9,xgnzcq=9,ftkfk-,bd-,qf-,dmql=4,kd-,xpv=2,vl=2,zmg-,mtg-,bjp=3,gx=9,zmc-,btb=4,cr=5,dts=3,qrn=5,qzbx=4,jnk=2,xjb-,zb=4,mfln=3,scpp-,jxcxv-,qgd=8,dtj=6,dmql-,dzc=5,qhjpfl=7,gnjjnq=8,dts-,nnjm=9,ncx-,tv-,kfp-,jr-,pnt-,jhzj=4,zrt=9,mfln-,bfp=4,mvd-,vk-,dlt=2,pz-,dnpc-,qhjpfl=4,jc=1,ngdhzj-,gxbv=8,vxg=8,vct-,zhcxr-,qpcf=7,vfc=2,jnk=4,xph=7,fmj-,btq-,nz-,lvp=2,ndd=3,fjkhx=2,qb=8,zqs-,qx-,xlnk-,qh=2,zqzvr=3,bhvn-,frpcdk=6,lsn=5,fjkhx-,jsn=7,mfj-,ndt-,svp-,kjgt=2,vnl=6,bx-,ksh-,xh-,vk=8,bbrm-,qqg=3,zll=9,mgpk=1,mgpk=9,nj-,mpql=9,xhh=9,vpmpp=6,jpchxv-,rm=4,srxx=1,px=2,cr-,hbv=3,cgh-,djx-,njd=9,rsx-,trtp-,zjjv-,ddp=2,spg=4,fgn-,vg-,fdlx=7,xr-,csz=5,dtpf=7,ngdhzj-,jvsm-,pg-,qsh=1,fr-,qxj-,thd-,dst=5,qfnx-,tjh=4,dv=9,zjjv=5,zs-,sj=7,pskvh=5,qxj=5,svp-,jvc-,dvt-,jlk=9,zkpv-,qx-,qxr=2,rxnz=1,gmt-,bplj=5,xg=5,dzfbl-,mzk-,dzfbl=9,fl-,gbh-,btb-,xhh-,ptt-,xt=5,gnjjnq-,trg=3,nmz=9,zmc=2,ff=1,bgnv-,ht=9,ddtn=4,zmc=8,jhzj-,dmql-,jxnmm=4,tqqpt-,vhck-,lbk-,rz=5,vcb=8,bfkn=8,sstfc-,mql-,hlqfs-,lcvj=2,ncs-,gxtq-,vfh-,btb=4,vg=1,lbk=5,rlvbc-,zv=8,xp-,tt-,kqv=9,sstfc=6,qj-,njd-,ncxd-,cnh-,rcqj-,vd-,zjjv-,xgnzcq=2,bgx=9,dn=5,pf-,mq-,ncfzvr-,thd=5,hg-,tv-,mvn=8,mql=9,bfs=5,chd-,bvr-,csz-,qlcdx-,zx=9,ls-,jnk=5,kcq=4,jxq-,pbpl-,ppcv-,pfc-,kh=3,xhh-,xqc-,jtrvtb=5,fs-,lvp-,mjq=1,vhck-,lts-,mvn=3,lv-,bv=2,rxnz=9,hqs-,bhvn-,djx-,prp=8,jp=6,nx=2,pl-,mvd=1,kn-,gx-,rjd=4,cs=1,xrv=3,hkg-,sstfc=4,kd=9,qc=4,bfkn=9,cvc=6,gzz-,gnx=6,nxrqm=1,pf=4,mfj-,gxtq-,rlghv=7,lqj=1,dqn-,jjzcc=4,fmx-,cms-,dts=7,nbjj=1,sfr=5,cn=6,nphm=2,vnl-,sqtr=2,tj-,jbv-,fch-,bx-,bgr-,nxrqm-,drppl=3,qbkqr=6,mn=8,vpmpp-,ptt=3,lkc-,zrnvb-,dzc-,rhggt=5,svhv=8,rxs-,kqv=4,srjhn-,ddgh-,rr-,lsd-,zlvd-,vnl-,bbrm=4,vl-,ptt-,rdz=5,cx-,tt=9,lkc=5,lq-,srxx=3,zbknc=6,jn-,ddp-,bbrm-,rzt-,kgrm-,srhkp-,fdlx=3,gxbv-,cms-,rhggt=8,bc=4,nrps-,sm-,sfr=5,vxdl-,dqdnv-,xlp-,zs-,ds-,njd-,ncfzvr-,zrnvb=2,ss-,pzj=5,qh-,fpts-,prp=6,hg=7,zrnvb=6,jsn=1,bgr-,lq=5,qprvjn=7,frpcdk-,bfp=9,xrv-,mjc-,fdlx=9,trtp=6,bjvfkc=8,dmxm=9,xljgjv-,hcl-,btb=3,qrc-,jxcxv=6,qs=2,mv=8,bfkn-,zqs=4,ssfcts-,mf=3,kppb=4,xdt-,pzj=1,jzhk=2,bv-,xmz-,xpj=4,qhskfz=8,dv=5,dlt-,mq=1,mrh-,tfg-,xgzc=7,hbv=7,ps=8,mrmsm=4,fzj-,lj-,qrc-,qxj=4,cz=6,tm=5,qp=3,pzj-,lkc=7,xdnls=1,hkz-,jt=6,qc-,kn=2,gnjjnq=1,vk-,qsh=6,mt-,tfg-,dgxlt-,ddj-,bqqf-,clr=9,jvsm=4,ncx=1,zkpv=2,bjvfkc-,bj-,cfc=6,qv-,tj-,nbjj-,rjlb=6,nd-,jxcxv=6,xgzc-,pq-,nz=1,jtrvtb-,jbv-,pgf-,tpr=8,qdmmzl=9,dvt=9,zffl-,kj-,hg-,qsj=1,cpjf-,mr=3,vrb-,tm=8,scsc-,bbrm-,dvt=4,lcvj=9,qp-,sj=9,vcb-,hqs-,dst=5,ncfzvr=1,fc=3,xpv-,pxd-,rm-,bl=5,bnvhql=6,vfc=3,mgpk=4,jp=1,ddp=6,rlghv=3,hmq=6,xpc-,xnph=4,gs=8,lqj=6,cn=9,dd-,xjb-,dmql=2,qfnhmn=7,cvc-,zqs-,gl-,jxnmm=7,sp-,mvd=8,gsjql-,rpvrxm-,xt-,cs=1,cd=8,bqr-,jx=6,vct-,csz-,mq=1,zz-,mpb-,kjrx=4,vfh=4,rk=5,vz-,srjhn-,jvsm-,ttc-,nhzz-,bl-,nzq-,ndt-,rdz=7,gm=7,vm-,tg-,zdbkp-,kq=3,nrps-,zll-,vhck=3,gn=4,lg=7,cd=4,qfnhmn=3,hd=1,nbjm=7,jrmt-,jkf-,kj=5,pbv=4,knzz-,jrmt=3,bfp-,sfr=1,dfn-,tjh=4,zc=5,pzzt=1,jx-,sjln=9,qb=8,lvp-,cxd-,cg=5,kxcgb=2,vf=9,dnpc=4,jlk=4,hcl=4,nj-,dvt-,bd-,pjcx=9,jrmt=6,rdz=4,lkc-,pz=5,pg-,xnph-,rjlb-,zjjv-,khtv-,bfs=4,kchv-,vk=6,dlt=3,zrnvb=2,jpchxv-,rdz=8,dtxx=1,zqs-,knzz-,knk-,dzfbl=7,zd-,cr-,bbrm=5,zdbkp=5,gvb=3,vrp-,xmz=1,dts-,gs=4,kppb=6,bgr-,rhggt-,vcb-,mgr-,dqjb-,hscff-,zczxrf=7,pzzt-,fpts=2,jfn-,px=2,cs=8,kjrx-,zv-,xhh-,sm-,xmz=2,ld-,bhvn=8,qj-,fl=3,rlghv=7,xg-,jxq=9,srjhn=5,cx-,pzzt-,hh-,bfkn-,fbq-,lhtx=1,pq-,cpjf-,hscff-,rm=9,rdz-,ndd-,krh=8,tshlkc=2,nhzz=2,xq-,grjlg=7,tggq-,lt=6,bq-,cms=7,mpb-,zmksg=8,qp-,lxh-,hscff=2,vjn=3,kc=3,hclp-,hqs-,dst=3,hlqfs-,hscff-,mjc-,ns-,pq-,cgv=7,mgt-,ss=9,ff=6,rlvbc-,hh=8,cfsmm=9,jnkgx-,btb=9,dtxx=2,jtrvtb-,jx=2,pnt-,nq-,qm-,cfsmm=3,glbv-,ddgh=6,lhtx-,zqr-,jjzcc-,bjvfkc=1,jlk-,xmz-,zdbkp-,dfn-,ng=8,gs-,xcz=6,gmhzz=6,vxj=3,ldv=4,hclp=9,jxcxv-,jf=2,tfg=6,zbknc-,gbkv=7,vrp-,pbpl=4,lx-,bgx=3,jhzj=7,blt=6,ppcv=1,ss-,rht=1,sx=8,rlvbc-,jt=6,bgnv-,xpj=1,mjq=1,qgd-,jzhk-,bq-,ftkfk-,xg-,qhskfz=2,dtbs=7,vnl-,vxg-,rm-,gxtq=3,znfg-,srxx-,fg-,lbk-,xr=8,jxcxv-,xgnzcq-,ss=1,qf=5,pf=1,fbq-,nfv=3,csz-,bgx-,lj=1,bfp-,gsjql-,xj=4,bfkn-,jb-,ng-,qc-,dmql-,ncfzvr=6,bx=4,ld-,ddtn=8,bj=6,px-,jddl=5,vcb=4,hmq-,dvt-,rm-,fr-,mg=1,cr=9,lq-,rzt=8,sfr=2,zqs-,bh=6,fgxx=9,cg=7,qlgr-,sfr-,fsds=2,hs-,zdbkp=8,mql=3,jhzj-,clr-,nphm=8,sjln=3,vrb-,fjkhx=6,ngdhzj-,tj=7,mgt=3,mvd=4,jqrrsx-,dtj=2,vcb-,nxrqm-,xnph=3,gnjjnq-,lvp-,zbknc=7,mrh=3,dtpf=3,qb-,nq=2,xhh=2,zmksg-,ng=3,nj-,xph-,ldv=7,fbz-,gx-,qf=9,vmpnf-,rjlb=3,bjp-,zpj=1,qxj=2,sx=5,txf-,zg-,tj-,hmq=8,zv-,kfp=2,dqjb=6,vf-,dtj=6,sgxp=8,btq=5,rg=6,xlnk=5,vxdl=4,kjgt-,qp-,bjvfkc=7,vd=6,sx-,sj=2,pskvh=4,xph-,nmz=9,xlnk=8,zdbkp=3,vkqjlk-,vk=3
"""
Awesome.run(puzzle_input)

Part 2

defmodule Awesome2 do
  def run(input) do
    parse(input)
    |> solve()
  end

  def hash(list) do
    list
    |> Enum.reduce(0, fn n, acc ->
      algorithm(acc, n)
    end)
  end

  defp solve(list_of_charlists) do
    list_of_charlists
    |> Enum.reduce(%{}, fn charlists, acc ->
      do_solve(charlists, acc, Enum.any?(charlists, &(&1 == ?=)))
    end)
    |> calc_total_focusing_power()
  end

  defp do_solve(charlists, map, true), do: do_update(map, charlists)
  defp do_solve(charlists, map, false), do: do_remove(map, charlists)

  defp calc_total_focusing_power(map) do
    map
    |> Enum.reduce(0, fn {key, list}, power ->
      list
      |> Enum.reverse()
      |> Enum.map(&elem(&1, 1))
      |> Enum.with_index(1)
      |> Enum.reduce(0, fn {focal_length, slot}, acc ->
        acc + (key + 1) * focal_length * slot
      end)
      |> Kernel.+(power)
    end)
  end

  defp do_update(map, charlists) do
    current_label = current_label(charlists, 0..-3)
    hash = current_label |> hash()
    value = value(charlists)
    list = Map.get(map, hash, [])
    index = find_index(list, current_label)
    new_list = new_list(list, index, {current_label, value})

    Map.put(map, hash, new_list)
  end

  defp do_remove(map, charlists) do
    current_label = current_label(charlists, 0..-2)
    hash = current_label |> hash()
    list = Map.get(map, hash, [])
    index = find_index(list, current_label)
    new_list = new_list(list, index)

    Map.put(map, hash, new_list)
  end

  defp current_label(charlists, range), do: Enum.slice(charlists, range)

  defp value(charlists), do: Enum.slice(charlists, -1..-1) |> Enum.at(0) |> Kernel.-(?0)

  defp find_index(list, current_label) do
    Enum.find_index(list, fn {label, _} -> current_label == label end)
  end

  defp new_list(list, nil = _index, label_value_tuple) do
    [label_value_tuple | list]
  end

  defp new_list(list, index, label_value_tuple) do
    List.replace_at(list, index, label_value_tuple)
  end

  defp new_list(list, nil = _index), do: list
  defp new_list(list, index), do: List.delete_at(list, index)

  defp algorithm(init, n), do: init |> Kernel.+(n) |> Kernel.*(17) |> rem(256)

  defp parse(input) do
    input
    |> String.split(",", trim: true)
    |> Enum.map(&(&1 |> String.trim() |> String.to_charlist()))
  end
end
Awesome2.run(input)
Awesome2.run(puzzle_input)