From 4678f229635f26d693382dfe3aff921a494d0e68 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Sat, 3 Dec 2022 09:10:39 +0000 Subject: [PATCH] 2022 day 3 --- 2022/03/input | 300 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2022/03/part1 | 25 +++++ 2022/03/part2 | 26 +++++ 3 files changed, 351 insertions(+) create mode 100644 2022/03/input create mode 100755 2022/03/part1 create mode 100755 2022/03/part2 diff --git a/2022/03/input b/2022/03/input new file mode 100644 index 0000000..712656e --- /dev/null +++ b/2022/03/input @@ -0,0 +1,300 @@ +fzmmmfwDWFzlQQqjCQjDGnqq +tJHJvLJVVttNsvTtTvgHHSVwCsQRQQZCZZMqQMQBnqBMQs +LgThNJhNSgTJVgvgtghPhbpfWzfbwfPmpprb +lDLnSnLZRjmWrlhrFF +PffQJNqJbPZbpmjrrCVNFmCh +qzbcbqfMfZMTfQTqqzzTPPLMHgBBBtHRStvgHRDBnSRL +WPZfJlZZCMwwZPWCwWzVHQhsshVSsfNQHdvQNN +FLGDGGnGdVjQQQDQ +ccFFbggLnRcLFRtFBmnJzdZZzZBMpwJlZMppMp +RZsnCZssCnDccJCnfcQfHTdzMzhdLdMTqdRqpRLwqq +tNrGNrrvGhTThQqw +rrFStPgrFWWgvmPgQjtmNtmJcfJcsJsZblDZfbfHDFHnfl +RdTfgbbPbJWDDqRvsDsmVG +NSQZLQZHpFGLqnLszrJm +ZMSNMHhNZMMSQwhQJWPBJCbhbcgtgfcJ +qZfqPvLnnZGpGpCJlvsMsMlHJJHB +mTWFFFTTtVSJMzzjWgSH +RbVdtdFtcrmbRQDDVHDQTbDNwLPLfnqZnhZhQnNwfNqnnn +nhHfSGHGThhZjnhrrSnsSczdzlfzzdQQVzRNFNcFdl +JJvCDvmCbtvpvbMmDvLbCJpmqdVVVcMcNGzRcNFcRRzRclQd +vwDCwtLmwLBDJmCHHjHHWGZHBnsnnj +QWTMqZhThbTbLwtGBrQfQQNr +jdzSSccVPPcgcLrDBtDVwCfNNC +vcBgcmssccplTnnTqsMhWW +FlcwZhBhGZhFJnGtZZFwlGsWRLHdWqMzPjWRLTLJHHjdWq +vfmrmbpfpMfzjHjfdM +VCSmVpmrNDMZhSMcsFnh +nHqQVtVZGGwwwnSF +fMBBBWCsCfMMbWfbsGmGzFjQGQFCPhFQhF +fbcsWpJRsWlcNVLtqtLLQcZQ +rgNJdfNJpgpJVMMVfmfVJgCtCTqqqzwTqrBsTswcCCss +lFLHGWLvHQFhnQFhbFnbHWWPBtwqzBPTcsPTswZCPBGCTC +QQtbRtLhtjgdfMRMDV +jTRhJpGhQPfPLsDhWh +wVVMbqbHwVwwMplHWfsfNmWcSLqcLmSs +lVCZlHnwHdRpRGvZTBGJ +csppppDDbGLbSqndFHHNdHsH +lVTlgWgjzCzfgvfggZWWlnHPPBHrSCqBmrSBrHHBnF +QFgvFfjTvZjzlvVTWljvTtMbLcccbRRMbwLMMLQLbw +tjhLjLJzpJpwjsqqfQqNrNfRnsRR +WvwGBPwWZZrnbBNrNnnC +PDvGVTgvTMGvZTGTPvWDZVJjljtLzhtmLlJjwJVJLm +WbzpSNswNWszwSLgSNMcrrBfPJJcfsHMrvMv +CFllhlGFDVFRCmhQDlDTBBcvgBCTcHPHrfrHTJ +qGRgVFhDDZmDnDqhgQFGqzwtzSjddwZbzwpLNzjpdS +FlpZrQSJJmQpSpqlQgbbRZCgGCZdDdbNdd +WswHfjfnhWPFDsFRDcbBbR +WjHvjjWTfTvHFjzvPnPtttVTTJVLtJSpmtlltp +tnjrnnnnhNlPBtbbcWpZScpjbZSz +wmsFqfqqqGHTLbzpLLbgzMcH +FGJqsmQGRVFwwQJschPdhPrBndBhtPhrQQ +dRdJRfTnCRNlJjPBDmBJsbBDzm +wSFWSgGVSLwpFhpLhQjzgPzbtDPDbPBsztrP +WMGvVMLLBCclNHHRlM +gfSffQBDBtZvwwpWDHcbwb +JnCmmJCRmztsVPJRFjFchcGGWFWcGcHFvGLvHF +VCPzJnsPVCjtPjdMsMdmVmMBfgTZBTMfSfZSSlfNNgSSfg +lwHJSVZHWWVwJQwbbVVtwWVVdpdPfRfgDLPZLTZLDLgRDTZL +hhBrBqRcnhsFFfddmdmmCmmppn +MNNBBRRshNHbtVMzQJMM +NBsSNtLNTtNsvlTBBRLgFSCbFmbHFCFhgcghSm +WJWWDdVzDZJjDJQcCDHmmhCnmHmHFm +zQVdQZQwqVQHjqzWWWdHpzMwGMBlGLLtTvRvRNsMwwNN +ZCztttSjGSqRZgRPDNQQNr +hLvmHshLmLcFwwhhwLqMVRRRJQQVNnRJMVRDNNRr +HFhTpFqqLcssmqmFftblBSjCjStjbGWBfj +crffjHDfrQfnfpLPgbgP +TmFvFCmFTFFCtNsmMsRvlRTpPbLGMnGSngPppShGpbdgGJ +vmslmwTNmtstzFsCvRFrHBrDZzcQnWqcDDHqQB +LQLPVLGdGrRPRhHgwMhllhhs +ZbSZTNqSZfNqNCtSSmTttbpSWMlzWlslpWHsWgJWhwJzBMlz +bqjqqFFjHqTTTZTmSNbfmdrFQnDdcvVDGQDvvVnQnr +mQdcdsSThlccSWhMgDnQnFtjQPtnjPNvtR +zzsGwzrrHGBfZJGrJpDtNHFjvNvDvVRvNRtV +wZBCGrbrszTbThcTcLcb +gJDDDDcPQgQfNFPhhZGDDcZZSLVtlCqzsMlzqpszlsVtFSql +bBrdwHTrHWTrTtzLlSMCCCprCq +dnBwRvmnbmBvTpbnbWbTjZPQJhhchmJcmcQPfmGNcJ +sjMGBLWGZjsLjJTBCCbvNrBCHC +mpcRfDSSdqDdlRqdwRvFrHFbrHJFJVvDVrTb +qvlgqwpcSQSfLjjhzgnMzsnP +VgmLHHNRNVLNhsNgRHLltjjbCWnCWZbldntW +GGMFPJqPwJGTvvCCdqdqlqCj +rGwGrMQzJQBjJwTVHgDQDHcsfhVhVg +pblwGBlFlWwwlgCSFwbLvQZFvzvZhzvmQTLLzJ +HfqccHzVDNqLmmPmPPQZ +MNtrVdDjHtrzGBdbGWCblw +NNhnnLdnnfhdhVjvThvqVvCj +tHtHBzBGWHBWGtPBSvvpGZVbSsTFjSqqVbscgjCjqqSC +HBtzJHzzpDZpzMWpGPtWHvZwQmNLlmQnmNdfMmNRmwmlwd +QzGqGwmbfTdPBgRRcgmMPC +NtNZhljrNjrSrtltWlCJCJJfcVVRcJcRgPjf +NlWSZZWsHhWWlprSSvZWHrWfQLLQbLGfQpQzzTFQbwzQdd +gcwcSnccnwLRRSzcBQRvZZdvtNtvRbQJQv +CqrCrrPsVstvbfDfbb +TPlPVhWFFMGMnMjbcT +gjjHGvcHgsgbSRQbRFWbjC +ttnBTNSSfwBLzplWPPdlLlMPlMCQ +TBZpDtmnnZNvhJDHggqqgS +zfqzzGwMbllcJFqm +NpHgpRZrRpSrSZLghlTjchNlNbhFmchb +RHLWHgLBggZpHpgHRZrLgZLQCMzCfDWGMCzMQQGvPmvvfC +bBWWlFFBBFdVMLfvsfjrtBvTrr +qZsgNZzcwfjZrfPf +gcnNNcDncsDGzggDnNRJnzHhmlMVSSbhVVVmMbbhVmMlGl +dNNRQszqRhPNfddWltvDltMMNlnncv +ZjZbpgpSpjpJgpCCpbFlTnSDTlzclDnMvnnMlT +GCJpjbgzJCpwZwrHZrgHsRBwBVRRsqdqPhLBQqsP +mnnVCcwGwnsVJntmfnBtBhTDzpzzpDWbDbsLLzpWDz +FcHQdZSRHbhZZWWhrW +dNljMlPPHdMPvRlHMRdjRRNBnwJfCVqwqqffCfCwtcBV +ZGtGzBBGjvdZvLWLcrPVcZcsNVNmVpcH +MnlgngCJMgJbhfDbCDPrHHVcNNrVpbVpVmmcVq +lSPhlClftSSBvdGS +jFhGqVCcPMMdGFqczBltzrtglrsrjBgB +wWgwvfDZvnpmnHwHTfNpDbtRWbzltRlSrRlbBSbbzt +fHJvJvvTwwJPhCccgQCM +BrrrBVgNppDVBbTgDvqWdWZqWqwNmNNHvH +sHsHnHlcJjFwMMFFvGdPvv +HllCQCJQJsnjgtVTbBgpQrSr +JgLPLwbhBrCbLBCJPFFlPFZRTNTZFRqlRq +pmffSWvDcfSfGmvsNHZsTRsWllssbT +vDddMmScdStfzGcpzzwhJwJwnCbLwwLLCwht +sWSSvmsZsdZPWdLPRRsmSrrnlnvJjfnggfrgtfjnjr +VWWWBhhHBBHtljMMfJHrrt +WWqpWVqQqLNGRNZP +QHjjGVBQpffpjqppQsSsQHWJcVVgJFWcFTWgNLggFPNc +bzzmbzzZnZztFTNJWRqmqcgJ +zDZlqMtbwhCBBfppvHDGvf +BNTdfWJmzHNHHzzTdLCfCfCswQjRjljVsh +FbGnrFnrPGSSvGPFZFFPGClLQpjQRwLjLplQhRlsrQ +GbnvvgvPFwbwcnZMMGSFvFHdNHmTBNJNmmmDTJDBmWcT +rBhRPrjJrRtTHtWHWcjc +SDdGqmhdFSqblLGlHHfHWl +DSSmFqhsFqFdzqFgwsVnvBQPPQPQVrnRsJMR +NZcgQdmSwZgdPFPVNFPqqVVF +hlhhjMhGjLhLDGDhCBJDCrRFRrqqpLPfpfPRVPprPm +MlhjlMDDJTCmZddQQSTcTT +zRddrwzwNhrzrtCLtLfsLrqflC +MbSDZvVwGZpJwvHvBVfsqtjqlsPPfsqsfclb +vJpvJvZTVgTdTgwdTn +SZMsTTScDMqwtDDJ +VWrbzFvnrvFQQtnhzdPFmfwGfqmGPfDwmfPJ +rrLbrnVrLvVQpLHSHjsTBBjZBt +bSrpbWpPpfzPRWrWvhJgddrcccgFnFss +ljGNTCtMNLGQjNMjQMGtZJDDggcldcFcvhdFddnhhF +vNCmQMjmvGzpRPPzzmfw +BrbdcqcdSZRLQltNDqFpCpHH +jnTzWsWjWjwTQnzMvFlCzNDhNhDCFGpHpH +wmmvjVQMvwmsQMMwnsTPgVfgJcLcgfSbbBdBbJSdbSBS +bJFbMdcmgFSFgmggJFcGwjRdzPWZWGDDGGRwGD +hrttffCVVCTVlrttQwzRzwWTqRGDGwjTvG +rfLChHhlpHrfHlnWlpWCpQVcMSmMmSJMmggbmMSMLFNSSs +JRMBJfMJQJTcNNdD +LHsLmspghmmpdwwwcwRCpPTT +ttLLlRSlqjrMqFtZ +VjtHVHtvVqttCdnGpHtplcshglNgprrlMhrcNghw +WTWRvRWFZQLWDvDWzwscNfcflcshlshFlw +WQmBQWPTVGnJPnvn +cpRwjcQwVfQzQPQl +BZgGDBZBsgWBDDJzlhfhJVmzVfmThm +FqWDDGrGDFNqFrDZFnplNHnSwtnSRwRplN +VMLVRhRLRfhfgGdfVdZWRdTHNqHCDTrSJNBBBgJNQgND +swlcpsFPcPwzpSlTTDrNrQPQqQBBrH +zsppFscsscmbzsFsbsZbMfRZdVdVMbVSWhLG +NjcjHFjrHHFpjGtVtGWVZW +fwPlsJqdndPnwJfQdfllwNtWGdtWMMbtbmbGWbMWGN +CPlwnCwnwqClTJThTDzzFcHNSShrRh +llqlsNsPNTpDNTDNNf +cnvcWFjSrMSFnvWHTzTggHCcllzLpg +wjJSSrFrrMMJGrFFFGjGvJnFswsRwRdmBdZbbqqsPtQqPZls +jlclpqjcRqpjzjnVPgTmBmjCrC +vGvsFNGGMZNvdGshQNJvJgbVMrnbrHVBgBTTbBBPBT +SvJNGhvvvFdfQvFshSpqPqLzRRPctRcLWwlf +LWSSqLVBbNqqLrWHLSHzWbbqQfFgZtmtJCQZzgtCFCQCCnJQ +PlldGDGdjGsMPhssjPmQZFJQQZQghChZQJgv +jwMcMpsPRRdsRjPwNpTWBLSBqVqTNJWT +hWnMWgTffWFbMLfHnFMNfHgjtBSNRzjBBSzSBBcStdzBtz +VGrVCGcVJswvPqJQjtQppBzpSwdjpt +ZqqsCrmmsfmWcHhngg +vnNnssMcZnlnlMFMsnFcZMGqJCbLbNLNqgLbgLNTCpLgwC +hmjzBzHmRSfBfmqgQwpQQJbQJmwT +WVVtthRtRdsdqtddZd +LhZBLfZpmcsFpFzm +vTRRwTRRPnCTwlFgmsczzLmgLvFs +HVVVNCPPHTTtClRVNSnwLTHSQHBMMHrHWBhrQbJhWMMbZbJZ +WPTnnDPjvPlChhJPcgCC +DRQdBqsDQHQLHsBSmVLBcbwgCClbgCGlJghgmhgw +dHMHQDVVRBsMWTNfWfzWzf +PlgFPFFJGgJhhMGZwGbpBtQjjjStBttptlSb +TTcDzmHvdvnDDzdTVnTDmSspWspQLpWmSsmqppsWtb +CHVdcHvdbrwJCMPRGJwP +BtBfcPfBhBGDhwHMlCmrNSCM +dQdzLFTQnRnQVvgLnNlrCCpFrJCNrHJrwm +zRVLZQRRvQGbwtWfbGZb +PPcWcwMmCwwgnphCCLpjHp +TtZsJTzzJSSSZJsdJtTrpblhRlHHHMngpLnnjHps +ZDrvdFZtJqtStrZfMcGDVwfwffmWmP +wCwSzzsHChhMVMhCPsSVLFWcdcWGPccRdjFdJjDR +wBTTlBfgTlfpQQltmfgGGctRdGJJJFDJDDWdDt +TppwnmlnQQqnlpqlmmwqlpphHqrVrZZSzshzShqzsrZVqs +CCqCTgmdMCCCMMsWgqqnTCmJDGJcGGJfrGNGrSrrQpwFFSwG +vZbDZvhDbzHzwNzwNGFNpNGc +ZjBRVHPRtRLjLMWsCDlmgMdBmW +MMsstRChwbChqRBqDrJNpNDsHdlNlJdr +vLmPLfGGGGcTmFfTSgvPCvpZQlHHZpdrFJplQdZHQdHH +GgPLmvGVSPfmfcfgBtjwCRwwjBbtVWbh +LPPgFPccLPRswfsHfJgDsH +bpbpTnCCrnmCtjBnTfDshHDwQVTwsDhQ +BbrjnjnWCbBWZbPWzLDzDWdNlMWS +pnncvLbcppBHgBRpddGd +MtJfjVMtMmFJDjWSjVWzGdGgNQRBzBGNBMCGNB +ZdDdsJFdDmtJmLTbwcvcbcnwZv +FGsfFdNdhfbDdbhbLMhbNNTPJVCCZTLJnCRVJLPCRTVR +qHjsczptHpmgHZBBVVTrrPzrBP +lmpSlcglQtqWtcWjpQQfWsGDMhGFwdbGGNWhDv +hNNNjMFMwthjFfvZBjFFvNSdnzSGGdGmHzHgGWSfHWSR +ppJpcCVslpQJpJJDWHCHmRHHWWGSDn +QbsrJQTQJVJNMNnZTZNZvZ +NmRNLtGNmfcRrtDtrJCnWHJD +blSzzSBssgfslWCCCJWFWHrsZF +zTzbPBhMlTVSzMlMldlgMvvvvMLGcQRmqLLfvRwQ +nnZsfsPLLfZfHLWdsZWZHdmcSpTcGmNScJTRGsTJmNcF +gqVqDMgBlDbwwCqVbQFpTNFcTRSJNSrqqTSm +jlMVMjljQBjMwhLfWWzhhfhZtmLH +bfHwMvzwFBNpRjfZ +nddcVJpGVpGqPVBBFBmhBhmsNRJs +DWcPgPcPgnqCPlWWVWGMwbzwvQSSLbvgLpHHMz +NMVqtdPVHgVlrfVrpnjCwNjjpCpNNpCb +zhSvfWWzRfRLfvSpQjwbmmmvQvwwCD +LBRRTRcLJSgqqMJlVVft +GpgNzzSMGpGTrgzgMzJTrPgzjRwBdBlBbLRBjdBwVbLRVbSR +sQWCfQcflhtQQcWCmsmlsbLnRdwqqBmmbBVbLVLwnB +fCtQWFWDZFCQhCctFDsftNpzPPzZJpgJJNTgNlPZgH +DqLtMSDLLttjdDSRdjZtdpdqVWFslFWrqWPqhwhfFwwCFw +CvTbNvvTJNGHnVJwPfwFFFwsrh +cQBzGBHnTQGgcNtdMMBpDBtCdtLL +QsNDfdDNQsSTtrQZQtJJZC +lLvRWMVMLzWbRjvVgVVGvmTtCrZBrTFFbmJCmsBCrr +lljvlgpMGgRpsjsRlGGsMdqDdpDqNqfhqqSdncpqdP +sVSJVmmtmsCCwschrbNMbcBs +ZgLLfqvzzqgfdqHQLnTLfQQFhFMrhbNGBwgGbMlNcFclwN +LTzqZrHHQvjLHnHdQTdTQvZQJjCpCJDPmCRRtCpStRRmVtmm +ccQVcVHwnnDqNqSWNnVvqwcgJblgRslgmdGlssmGbQdddb +rpFtPrzrMFZvZTLPpglhdssFshssJhsggG +pTtLtBMjZLfHvNWqcBHf +PZnSjnnsVfjfLLff +crvccpglrtHfNbzbHLzmGN +lptTLFFpdgvttFWltTclplDvhJMSMPhJPhChShPBZBMJhPMT +mPSPdnhznPdhSmPGchJdFDtBhghgFgWpFBQhTBMg +rHNNvbqHHHwZwMGMWtgtQMZQFQ +wRqqRffvvNHwrHqrNqLvCrqvmPnzdsGJsSsSdSsLPVVPnjsn +CzlngWpClJlzRJpDnpmzCndrhBcrhwcsBcLsNcsmLdQQ +qqSjqFGTFbPFSPTVjcBcBsDdQrwBVLrNcc +PtDDtZTvGDvFCMzZlRJCfWfJ +vtQDpvpvVvvcSFrrljZZsVjFrV +RqcTTRddRrlsjZrwrT +zmbdRdMmMgbPDcGhGmnDpcQn +gZqJRZRZdltFVGZQDZwV +MCMSRHCMRHBBVtVCGwDCFGtD +jcHsTMBNSSrBMjmMrcTMpRqpJggllnprqzRPzdlP +mWSWHdmHWZWjBnGs +TvchwtTfcTvhzwVGNtdrbjnnBnsnNr +JTdwghvMzwfdcMVJqPmQFRPpCDJRJFFC +DsHDCrszvvhHsshvsrrsgwdPpdLFgWLpbRpWFfMjWjWF +BVJPJmPmGZVnfbVfMWpdLMWb +cNGtnttqmJHNvNzDPPHN +gpjmMQMrfmMntCSCNmSNCm +vDRqphDhzHSdtqdCNH +LFLLcbJRJLppFQlpMFfF +SnSdvchzZZczndNvwcwnQrGfqrTTfhhTDgRGGLQQ +lVWHWMmWmttsFBMLLqLTRRRqqDBGTf +bsFPbFFssmFjWRmjVFjHbczvpZCwvwZccndpvzpzCP +jzngbHrlHQllcbcTCtHGWtftGCHqWC +JJgmsJRwFqChLGtqGs +SmJmSmDdSPRwSMppJdPPwVvvzNQvjrNMNjMZZrQgZNgQ +PvPlPcZPZFllzNzCDdhhdHjrpHNjHBHB +VmgWtJWrqbQmqGDBdGQjjhBGdG +tmbgggbgnMWnStttgnfnTzrCfPvFnccnPclT +RQQbdSRdpprQSNVqqqfrffjvnjnJnhnVvHhBhVjJtjJz +WGgGgLmLgGZMPDBhDJDHjMBFnD +WPPwPGwlLgZwmWlslCLRNbrsTrfRrNNQqsspBT +dNNpHpchLppdccTNtZZTRRPSSnwPPSbSnhhrhnSJ +qfqsFsqffgQMznJrPznbMrrB +vglfqQCgDgFjglCDCjLZpTHNPHttdcZVVN +FWtDHDStZwrFCDwrgWPFDsWQJZzlMdpZzlNpNjdjjQzNzj +BqnVGVcbTmGfHLGVzvpQpvJvQlflMdJp +ThRRchnHqLTGbFCCCrrSSFhFCs +wJrwdZPnJwqPbJPCnjFZdvHtMvsLsTsDtHsHDDqvpH +RWzNRWjRfgjNMMLvcMcLNt +WGGRQzzRmRmVQSgwrwJjjCbJhnbShJ +cjngcvcwbMwWnbMWjbgvnsjPftsqfthqsBtsJJJJBt +HrGFmDDzpmLTHpDsPfsBNBPfzZNPqN +DDVmDplDrpGSVSTTHGlpLnPwCRnWcvWCdPbbMvcVdW +BVRlBfPBffWswVWQsfwBNNPMFMmmGFZGnWZGtztrzMZMnz +HqSJchHTHbTgHhGhvmRzFmnFtzRF +RJqHTpgDLJDSqLJJPNVjsfPwBVsVLlfN +NDrBlSmrFBlbbJllmtHHwhNNhZztqHVRzQ +CMTCGLcvvtfCdCcCvCnMTMcTzjHwVZVRLjRRjQjRHRwzwjVH +dfGdgGMGPggnvfvgbtDtlSJPDSFJPslJ diff --git a/2022/03/part1 b/2022/03/part1 new file mode 100755 index 0000000..631cb6d --- /dev/null +++ b/2022/03/part1 @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +VALS = {} + +for i in range(ord('a'), ord('z')+1): + VALS[chr(i)] = i - ord('a') + 1 + +for i in range(ord('A'), ord('Z')+1): + VALS[chr(i)] = i - ord('A') + 27 + +score = 0 + +with open('input') as f: + for line in f: + line = line.rstrip() + half = len(line)//2 + compA = line[0:half] + compB = line[half:len(line)] + common = set(compA) & set(compB) + + score = score + VALS[common.pop()] + +print(score) + + diff --git a/2022/03/part2 b/2022/03/part2 new file mode 100755 index 0000000..949a777 --- /dev/null +++ b/2022/03/part2 @@ -0,0 +1,26 @@ +#!/usr/bin/env python +import itertools + +VALS = {} + +for i in range(ord('a'), ord('z')+1): + VALS[chr(i)] = i - ord('a') + 1 + +for i in range(ord('A'), ord('Z')+1): + VALS[chr(i)] = i - ord('A') + 27 + +score = 0 + +with open('input') as f: + for elfA,elfB,elfC in itertools.zip_longest(*[f]*3): + elfA = elfA.rstrip() + elfB = elfB.rstrip() + elfC = elfC.rstrip() + + common = set(elfA) & set(elfB) & set(elfC) + + score = score + VALS[common.pop()] + +print(score) + +