commit 594e0a238dd578db565948bdaaee57c252bbc142
parent 5d71e62e1816387739ff6156624f42ced14c92ed
Author: aabacchus <ben@bvnf.space>
Date: Sun, 4 Dec 2022 13:47:40 +0000
22.3.1 in python
Diffstat:
3 files changed, 319 insertions(+), 0 deletions(-)
diff --git a/2022/03/a.py b/2022/03/a.py
@@ -0,0 +1,13 @@
+with open("input", "r") as f:
+ l = f.read().split('\n')[:-1]
+x = []
+total = 0
+for line in l:
+ n = len(line)
+ x.append([line[:int(n/2)], line[int(n/2):]])
+for line in x:
+ for char in line[1]:
+ if char in line[0]:
+ total += "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".index(char) + 1
+ break
+print(total)
diff --git a/2022/03/example b/2022/03/example
@@ -0,0 +1,6 @@
+vJrwpWtwJgWrhcsFMMfFFhFp
+jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
+PmmdzqPrVvPwwTWBwg
+wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
+ttgJtRGJQctTZtZT
+CrZsJsPPZsGzwwsLwLmpwMDw
diff --git a/2022/03/input b/2022/03/input
@@ -0,0 +1,300 @@
+pqgZZSZgcZJqpzBbqTbbLjBDBLhB
+wHptFFsHttHFLMDQDFTbbj
+fVfvsstwPHwNwfNGfHWRSnlpClcJzCWCzddSrddg
+bdgHbZJHgMHgJgJctDtVssVcpFtq
+rNNQqBSzTcBPTDsP
+GWNNrhGnNnWNzRfnRQRbhCdqHMbdmbZddbmCmd
+BSBDzrSwrqccDDwbfcBjsRwggClslTRWGWGMFlsF
+dnhVhLJtzNZdgCRlsTGWCRJG
+ZHZdNzptLNtPhPdnprPbbDBrSqrSQPjbqD
+rlSwlrGvwTTSwSggCJGQJdhVgJGQ
+jcrHrMWfNHNzQgVH
+WbfjmBMrBrrmLtqMbwwsPTvPpwvBPFPsws
+NRNcHzbzbMRcNPjPrrlBPlbtBl
+CZwVCCpWggqprwtlHlssHtPr
+WpmLghCVCqCnmVTLnccRQvvQQHDhNQzzzc
+NvGTmNGDJsrCmCWPHpCP
+nqfVfnFQnZQfFqzMZBPtppcBPPCBptcrbF
+fhRSSVfqMZZhMnQfjVzShNNlLvldsNDdvvljGpllDT
+JGRNWRGJbGmCGRbLmGpqShhcQpQgCcncScSQ
+FFdtjvvpvVFnQhhnQhgf
+ltvjjtjHlzBtWRmNPLZRHLpH
+FFCJFsvgLsjLgWzJFWJgGwBDbwnbwlDddqffnjnlnd
+pTpTMQpMZHQhZQpHPZMmTMlwhDNNddbnDqdDwwlbVNVd
+SHpmrHPZHQpmvFrqsFvgCsRq
+TtWpWhQlVZrVptJhtrtdbLPDPbjFbCCWCvFFbLSN
+zMGlnlsgSSvjjGSF
+msznlgcwMnRwznmBqTZQJrddhfQJtBJtZQ
+mwTwLftmqqSHWfCfLHjWftBthNNNVrlcFRVNrNrRTrMgrRNg
+pvJPJQPGPPzbpVpVlMBVchFl
+bzQPQbQQdsDZPDGJnBGnPGnjHDttqqqqmCjftLCmWmfftC
+ZNpfdHcccTfdwfMFNjBttMgMbBnvlvjBmB
+QVPsGzhbszRLRrgvtgjWgljlRtgt
+VJrVLsSrzLzGPChVGzbrrfpTSHFfDDHSdpZFfHpDTZ
+NPpvDbmbsmdbNvQvDdWQpmWSnnQCLBnCcQSCnnLlwCBlZz
+jggrtGTFhtGfjhDVjrjgMftFwnZcwwBCnzzVwBBwSZcVwLSw
+JfHftHhgftgFJWPdPDWRPDvPJv
+ZSLLZJGglDSVNDGGGgGgngGmHrfLzmHvvjfjwLhHvLfHHr
+QqFWszFMTQFdFPMqBmWBHvfhCwCjhHff
+pTsdppTMPtqqdbnlNVzJVbSSnbZR
+gBqDccrrJDwmpTWHHTdWMPWWZFHF
+RNfnfSwRjlLSWjQMHWvQZtvH
+GRLbnzNnzVRLCqhwzwBmJrmc
+CcGnZGnGlRncsspmFmmcmGRJJzCDTzjLBSDfqjwDDzDLDB
+hHrNdPWhrbPdhPgVWvvrgWdfwjfNzSqfqjLqzfBTzJzJTz
+HHQhhvMWbbdRswmlsmwsQc
+rrwhpZPrccRpQdcFDJNqhtqtqMLhqfMh
+lTtTllgbzTlJsmDMvbLbsf
+VVWBTgzlzgGnngrtQRQRtCtwZRQB
+HGnGvVdLhlFcmvPWmT
+jwBLqZgjrtjqmFsQTscPQs
+ZBNZtwLwztLpMrfZBLMdbdnfSRVVfnGbnfDVGh
+LmBBBzQrBgBhmmggmtdVdhJNMHNdhsHNDd
+ScSZbRplCcMnSpvCfCCZcpPwtJPNtHPHNVVNtPddwlNH
+CpvpZGfnffSpnvRSSbcfScQBWrMWmjrmFFBzTGQWjMmL
+sljSjSgsjcCLllsjVgSjCtspQwvNNhdFwFQvwpbtmhwhpN
+hDqqWzGRHHfRrJnrWrfWfHBdFmBFmBbdBGBpwmFdFpww
+TDnDHZrWWHhTjPClClSP
+wGNQGQDGjqqmwHHs
+MWvvrzgfsdWsvMrSdqJqcpgHgnqLFLnjpH
+fvsPMsPdrTZhChNDhbhPVN
+sbMgDDtttVvpMtcJsgcGGBBfGLBSLclQTGPS
+CWHWzhhRRHjqRmSGPfBSzJfSBnBB
+HjjRHWFWhRRwHNmCCRHhhFdNDNrdptMstJvsbMDtVptd
+RnSwRsLsnSswjDDDBJPrJv
+cpzCzlczHTJVQhvBQlDVDj
+WmGzqTmHSsffqqnJ
+vQSPHMwpmpQMLGfTPVLRPRVP
+hsWhnncsJqbGjGfcfBMMRR
+sqdNWqqghbsJslgsJqgWllMWDppSvNCHQHDSSHrHrHCSvvCQ
+ZWWnWMmmndQZmffcdZcmssQqrsptVwwTtQHTCTHH
+SvvrPzvvFDzGzTszpGGwHT
+vrRLjjrPhLjrjPDSfdcMZnmdcmJcfcRf
+HpqWhDJjzmcTSbmMBVBb
+nCzfLtFnZZrcbcVVfTBfsc
+FtRFzgrRtnRzrFwzDjljpjgHNJDlNlhN
+gtNRRSSrRmjshHmm
+PQDMwPwMppcQQcvCFlhLhGmjflctlnHGjf
+QwDMFFdtwFDQJZZZNqSqJSqBgBqTNJNg
+cddzbbzQflTDcDfRbcfbJVsplVsChNghHNsSsVpn
+FBWFWjFFCjWPBSPPJsVpppPSVH
+CrCwvjWvmqmvrBvFwZRGQQDDcGTcfbddZdRc
+ZBQqdGLFmmzDmTZz
+PvrVMvGgWmwSmllglS
+NrfGnvWWPhfpspsGvLJBsFBbqJCbdQcLBq
+DrwTrlfGThhQTpDdWSWgdgwLLgBSZH
+bqbPRVRmzJCLWSgCzCLH
+jRtbNVtNjNqRqsJtbjbMDQHQGlchfQpfsTcHpGHr
+tMnRcnpDcZtpQDSCCsGGHvcGPGqGsr
+mzJmjWJNlbfmbhzVCCPmZrCZqPGCgZ
+JWhzjJBdWnMLZtSBTw
+tvdLttzvtHLztnQpssdTPbMqbqMTdTss
+jhSRGNjjSjhSDCNhRgRgclNjmfZTPnbTMqJJfqqsbMflTfMs
+WnCjcjDRCChSNSCNDjNhGVDtQvVLHzFrpFwFrHFQQwQpzp
+fLbLLLLQhVPhBVmDwmCfwsdwwDps
+GNtctFTSrrJqGGpHFcTJFTwsslwmlmWsdsqRRCmqwdWs
+ppctFTTSgHcSrGrrTGFcrrnhhQbPLbQZgzLvQQVVvZvLhv
+mBBWnnBbBCtssmRThRDllR
+wfwFQcpHFpddFrwpGcHSHdcjQZZlqqDTTjZqssRhWllssj
+dWfrcSGFpgrSzFgMbCPNPLtCtVMV
+llLlGLJJMjJMGVSvVMSLRRHvjCZtgZccttnmbCtdCcmCCztn
+sBQNqPhsrrqrrwrsppsHswsZcmnNCzdZtbgntcNgcctnCt
+WWFBBsPwpWPwBBHpFFrWGRMRLlJfJVMJRJLWSJ
+vgMvQnPMntnSQPSgMvSMpNJfJDNNRpfZmGQmbDND
+HlbjHHBLjCHGZGpfJLpfwm
+qdHWqBbbbjrTzdqFqssvtPMSSFFg
+TGDfDHSgtTzPPbnCtnNtVn
+WQrWMFpMWMQbCVNPRWVWWv
+pdpMMrhrprQshlMFjZpdjZMgmlGJJGlGDBmgmHgmJCSBHG
+zWWBjZZjWPFFPPnBCVdsqmnCdSLn
+rJvpbvbpGgTGrNJGGpRRhsCqSsLhnsmTVnSLTLHh
+gNNNJDbpvGNfvNSDPPWQWWPZZWtjlQfc
+RRVbWWWvvZVWmsFSsDNbHsDSsg
+CrTwJQJpJpCCwvlJQTTPsfzDgfwNhszfszFhzFDh
+ttQJtvjpPvcqTllJTPtPRGMGRGLWdVZLVZjWdMjj
+NnPCTQWMMQNNNWwWnMzpHczzsZcCscddHdGs
+mqRgqqVlLgqmfVzcGpzzSHGZcgcz
+tjmZjZmhqftlJRJhlTMPTPQbrPBBWnhnnT
+hvTQqpvTqjvhpjnCqmCnSDSFDWFFLSSSWDnSVL
+tZwGgsfPcltgcZltRgNSDSSSSldmWMLWFVHd
+GrZtwRPbGwwPcGRsZGtRtgQJJhCjpzmTBTvJzJrjvzQp
+rwmwqDWwfDtztnFGBB
+LPdpdVcdPGvPVgZsPtlhTTtthHBhHF
+dRdCjvpCRpjvCMZgvLgRVJJSWMqmbwQJbMWGWQNbbQ
+CMCcMcDGzBGPmBmznTNbnGbrswNTwTvN
+SSHVWZphqWWJJzNsbnFwFVNjbz
+flLQqHzzgtQdcDRB
+mdzvFtllBgFttGnvfMwMVRRZCThSNZVhMd
+pDTrDHjWWJPqjDjDSMqNwSZRZhNSRNCZ
+jpcTpQPWLLpDTLcTrPjPDcjzzFLFzvgLzlzfvGFgfmgFzF
+fQVVPzBpFVVrtrsJ
+PldSLNSmWwMCcCMMcCNN
+mSPlldllmPdRnLRwmbnLwmwvTjBTghTHQjfgjpZHpfHHfZbZ
+pmfMcfprMqMrZZJcMZMGWTsFCVCTVPPsVTWCGPDP
+vrvvvLRbBNNBbvBbjBHbQhgDslPTWsPTlFDsFTFwTWlDVQ
+hgjznNBjHHgrhRHgrRLRnRfSSJmdqMfffzqJptdmmmdd
+nRnPlCRPWPMFqwPLwq
+tBGfbSbHtBVQgrbrqfTFFLvTNLLNGTGMLdws
+bgHVtBDtqnqqlJRD
+SdSJrHssFBSVsNtMMdRWnTRhRl
+vcvfDvgvcwvFRlbnwWRlMhtn
+DDDqcqFZQPgcgcfvDjLDfVrsSVrHBLJVpLpCSppGpS
+gJGTFLTdrpLdBcWBvnllvlMvMC
+RRqbbQhwNZZwQRPrSZWnvHSZWSvSZC
+fQDNRsrsQzfbDrbsqwdtpgJVjdJdpVfJFLFF
+DzWqFvqpqFSCSzGRGmwfntGjmR
+cbhZNJQBtgMHJbJcNcrmfhrRrswmfRwnVrhG
+bJNgbNdJBBPMHbcMNMWWvSFpDLFvCStqpLdv
+sLsHTsTbRLRwqssHwHjFrPDwJDppzFDJmmcrPJ
+BnZGBlMZnQSgSnvVSMmJzPDCzFcrLPPJmpDG
+BgBffVLhQLgvnBRRssfqdfHbHdNT
+HRPVmjqBqVjVRRPmcPmJjbDgLDDshbfRLlfbfLbhlL
+rtTzSMSMFpTzfgDzzgsLfLHZ
+rNpGpSSHwMTrrdHGNtTPmVjnGGjVjmBGmmBjJB
+DBqDQDQHSFlHsFnN
+MfLfwwLMWGLrWMMnpSlsnGJJlbFVjV
+gRhMZzhrFLWQvTPqTPcvvh
+NwwsHwtnFCtzcPdbvrQbBqclQq
+VmZLLTLfVpwMBrVVqqMM
+mgJDjTgWgLWDppJZJTWZmSRzCtRHhGGwHNzshGFFCSRt
+RGCCDRdFZdRCMzzGCDGCmGHMfqbNNNLQLfFqnnqnNQqVPnQn
+glgcrwrJjJccBwdSfnSnVqrqQVVnNq
+jvtBsjstgstjltBcWzTGGddHTWDTZCmDGm
+HJHGZZHnctSSDhZtmZ
+MjjQFSvQlRjSdRqdqvVSqCCPtpRpPPDfDmfPbbpphC
+SNsWqMNvFFqdqVMgwwBHrGHnHgcWTJ
+jBcbjSmSBbbCcPcMjmbzFPhDMDfrfGRhGQRMnGQfdrDh
+wHlqwlqpwZqcwVlqHtJVJLTdhndTDnhffftTGDTTDdTG
+JNllcwpZZlpZJjNzSzSCNjSmFN
+FhwRPzmPWmQQmwFPGGMGGRPnRHHVfDbvJlvDlHSvDTDfVHbD
+NpjcpCdqpZZvwvJVfDdDHT
+twZtqrBrBQBMBPGn
+fBFGjbLLFblmbWFmVfBvrvMdMdncnrdNbdQNTr
+shZHHRZhtsqJZhHhgZzgJzVJrrSSvrMdMQrNTvMNJQNrdn
+szHwgtHtwPzPLpVFpVPLlfLC
+mrsrtrWjljjjvwwgNnZfDHJDqTqrHL
+FccMPFQcpczpdMPhMqJngNfqfnFgDnnFfg
+BdMpdcDPcpjBmlBmVWts
+VvwTTlfVlblwwSsbfTdzVqjhzVjpjjqjqpzV
+rwCWFGmJrNCmMRHmwRFPmHQQhBLBzdLqBjhLBHZdQB
+rFwDrMNRJDJFPRmCvcTcbDsvstTgfTsg
+zhRzdRRChHCFGPDRvWRWvWvHpZpscrrmrZrJcmspJmJZFfpM
+wQqLtQLtnjbjVnVjbBgjbBnbMZMZJlVpZfJprsMprmGZZZml
+jQjjNBLLwjtQBtwwdGGDCHhNzzWDzTPD
+DzzQnCMMznFnCdnFFlHtlmhVRtmVVmVhSF
+PWrPPRTfLJJtfbtBfV
+wsrggZsTwTTWGvDppQMRjjMCjMZp
+fTjzZVTlbffCMvjgMpSFWBNBWSFsvBsNNccF
+nJdwdPRQqGqbGJQbmmQQhRSBBBSsPPHWNSWFBtDNBsHH
+nnQhwwQGdLqqwnZbpfjMfzpzLbLj
+jgTgCwgjMgGLhvRrHrHwhvhV
+bqSsSsZFZBlFsBlTSppVvVvnVHHvHnhp
+qFlbPbFFsWFsBlFWbsbsmzTcMjLmtfcCmcWtgzgm
+rrHbfBLbfMcghcmrcCzg
+RDStDtvdZRQdJSQWWWdvFSgNvVcnghhmnnzhVPhczPch
+ZtJpJttSZStwtttFDQmLGTlqMLqGfwTTGLfTGG
+MrfLWwfBwgghvLmNvmHHHGGQHQSSscscVvTV
+dDjZjDPJtFRzjdTTsqVjTpqHsGrT
+JbFtlbPRJCzffBrgnlMWmg
+ZFsbbVLLdZppLFpcJjCCQJlGcQCMZq
+TwRtRBdBClCTGlcJ
+rwBvBzDvwNNDHLHzfHssdHhS
+gdhgftTNGTbpqJqjjgRJ
+lcBcMLFzMzLFMzFzPjRBQjQPQpSqhpbp
+mzzmZHZZnZwLhtGfddVsNCCnGG
+lblbPGSGrTLRwqZLvP
+FffCCFzFCWzzvmjRJnRTnZZNJCTqCR
+gdhztVjhHMsGvrGVVB
+ZJZjJGHZhDJRFJHjDZjhPNFgFmrnVmgVVzVBscnzSg
+bwlWtMwtbqdCvlQCplmsqgnVVScnVgmnmzNs
+WMWltTtvvCdwCCRPPfTHGcJDfGZL
+svqQJLvSSZrZZZCFCBDPDCMTDpPwMWDPCwRw
+GnlnGbdldjhzzhpPDTWjmtMwPmWW
+HzVbGnnbchblbnbzcQTZBZrQrFSHvLBBJv
+MmgMmVpcRDlvbvpHJF
+GSGTLTwhwwhzQqTqwjFlbdvdbrlrbrrDnDvHlQ
+zLNNNtwGFCMsWsCWNR
+tSTDDDftSqSsTDnTtCWNrbFsNJJvbzJbvJ
+dhRdVHdMGRgPJbjNPbzgvr
+VllQmQdhRHLhhHmLlGzSqSQDDcDBnnBnqDfSct
+zBzJWZBLZNNGLsbTvLbmbT
+QdtQwfdnPdPTbsRQGhRvbl
+pgtPgPjVDnpVnDtPTFFrJJTBCcpcrpCW
+GnWMfBfdCGMbjRNpnzvvNLRNVv
+FShJDJJscwwszNjvNjNNqZ
+tJmccwlcFlFcHlPcHFfdrbBGBGfjCGTfBCPf
+GhlcQsZNQZWhpcGhwlPmqnnqnjJjLRnqzJsJLJ
+VTMtTtDTbvbMTfvdJqngjmqzdjmJjCLm
+vHtbHTDBFvffBPGwLLZBQNNl
+bDphJrpbpnBbDrdBvJdDFBMtMlfgtsFSstfGPPgggPGP
+RZmNjTZQNVHQHNGSgMsfPlShSs
+VmchTLZQLjVLjmTVmQVhTmwVrWJqbDqddBrpnWbvnqrqcnJB
+jWWgThWtgSvSSWlJtlShllPcHVnJHPbMHPcPVPbVZrHM
+fGdfRsRdNwfRQhnpcZdVhVpbPh
+fGhwNBqNjqStFqtj
+TSTBrSDlQlTDrrQclrBSLffPvcfcdVjVMGGPLjLL
+qnbnbngFGhhhPfjjVffjff
+RRWbmgpnmqlrCwwSrwmG
+mZZTsdBZVZBZLVHdFmsNnCrCVQQbWvWjWNCnbg
+QSffDGwGGrPGWrgN
+hflwzltflDpMpDSllcMDhSShdsdZQdLZZdHTssZzmqLzFmLB
+LLRJRshLfsJfWnLBTlTBlFzNrnrBBl
+qmmVwmdHqmqGHZdHbbqSScdZQTjjpTFFVBBrlDrzDFBTjFjF
+wZZwmcbvHgqTmGccmvdCLhCPJsJCPWgMLPtJsJ
+TWbbbNbJJjJbqTjtJJjTQCtnGSBndMGCcSZSQwCB
+mcfRfrcmrDRrPsdQSGZQGnsSQMnB
+DDRLDRDFPpgmpcgPghpfgvRTjbhTVjHljJjzlVzVTlbHll
+rPlPrPllBGgJgdJfHgfjJt
+pppZVfFDWssMfFVVFMpsMMVmHCRLdcZCRtvLRdCtCJdHRttH
+mDMfDFDmnMMmsMFznDFpzswbNbPGwwSGBrGrhrTzThSl
+qDNFfCCNWLfWWhqhDGPMMZVwgpCpMbJwJCvV
+RdstRRvdtmtPVpppVbVtrp
+zzncSRdsTdQTczQBsLvvHNhDWGjDHNLDSG
+bNNpcfJcCtNpHFsJsGGjLGzmLjLmGzlFGW
+qwqZdnQnQwnhhzmnMWjmNlMzLr
+qhwwQSwStJbHNftS
+WlfWSwDftzRltBWVlRDlsmBJPcsZPmcJnmPmFhrn
+dLQbQbvGTddTvbjQCbLbhmCrZZPPsshPPPrJZrnF
+QgFjQHHbMvdRMVllSqfSlf
+MDPJBWWPggVlPVDMSljdZNNpwjwbHZpNbDdH
+mGmzcThGrtntHhthzGctRbNRNwRNzZwfdZpjpdRj
+ThtcvvtThFcnqFQSHgBSVJll
+hVqhFLBngHVFtJjtLCBJVSbbPNNbSmfLLTSNSrrLTb
+vsdZZpvQdczlMdMvzlcvvdQprbGGTfSbWmzPTgmmGTbmmfGP
+vgRZZMgwdgsQZdMBqVhjhJqBhJtRhq
+bgFQbMMbTbQhghddFTFGnmSmsNdzHvzSSzlcHsls
+fZDjVtfZLqwpqtCfCjCjlvqScrvzqHSzszzSnczr
+jpftjCfWCjCfCRZZlpCpjRWQBRTQQbgBBTMbghgbbPGJBJ
+VZZrbBVwbbbVVvgbntnggNRJqRRNNccMcNqJcJ
+jfDPfDdGGhDGfGFPCcZQqMpRNJhqTcMc
+LPfffPHGPDjPFGWSdHPFjWtlBlwvlwBlbtmLltsmvtZb
+TTfJDfrJTSrHMcVMJDTfMcMDBQBPwnPlznPszFVBFgzFgnsn
+CqtmWNNGBPzwbbwm
+htdCthhWGtWWGNZqcZpJjwwHHHMcHZDM
+VvjQjQCZLbbSbTPpSHtFzsHzppMfzz
+DJrJWBcDcWJWmmcgGRGRGWGDzHHwzdfRHpMztMpfdFdFdzdM
+DmBgGDqJNhGcccWmcZLjTPLVLTQhPtvvTZ
+qfhvwNDQqwDGdGZZGwPTTw
+STsJgsRtJMZPjlsmdpbs
+SCTTHTWHNVfHQqqq
+djCDgllgjJjDRRNgRlDdBgtpQHfhQTrLLrGBtzrQhpBH
+SVcsMGcPSbqSPmLTPHHQTHrftPTr
+VcWnsScqSScWcZbMMcSVGbNNlgDRlgCCNgwWvvRJdNdj
+mgPllfRgvNmPGQGGsmQNWlpFtnBPFShncTFShtFShnjS
+tLLzMJJwwbbdrrMLqLVJMzVZFnpTTFpnCSSpShCjBJhpThph
+HMdVwbbLMbDMDVlmDsgtNtNRfgsm
+hNsgsgzNZRghPhZBdssPQfzDmQSmmzQGJWzfCDJJ
+bblVHvvHHTljwFCfGrvmfmmJBmGQ
+THMMFVwqTPRdZptMBP
+QvcPGSvQLjmcQWSGWWGjLCNhhqpCdBCNCbJNdVWpCh
+rwtLlzZggLHnHlwHRDdVqBbCdqqVVhbqVnVh
+zRDzwRrwlRlRTgrDtllmQGLcPjGLccFmTcGSQc
+RWlgQlbcWBwzsJggTfhh
+GrnLjHLjmLjjGSLjSDmfJJpfThhfSWJPqJqhwz
+vLvDDnDNrCVjCmNDbFlBVZdVRQlRbWcb
+mTlwFngwmlLlvsmLHmHsLJhJFfcbdpbNcjCNCbpccb
+tZRzBRzBBRQzPqGRqrVQtjjfbCMcfMfCMMjVjfCJNd
+SDBBPtZZTdnnwSvg
+nddNNMMPNBnBNnBTQSShlSHghlDHBr
+VcccVmqJsJsjlTmzTDggmHHT
+VqLtFCqFJfVtVjsNgPNNMMWNwgtNvn