From 1f3eb5f717527629e5d273e0395c5087592af5fc Mon Sep 17 00:00:00 2001 From: Luc Barrett Date: Sat, 3 Dec 2022 00:27:09 -0500 Subject: [PATCH] Day 3 --- day3.py | 27 +++++ day3.txt | 300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ day3_2.py | 23 +++++ utils.py | 0 4 files changed, 350 insertions(+) create mode 100644 day3.py create mode 100644 day3.txt create mode 100644 day3_2.py create mode 100644 utils.py diff --git a/day3.py b/day3.py new file mode 100644 index 0000000..53cc1b2 --- /dev/null +++ b/day3.py @@ -0,0 +1,27 @@ +""" +Advent of Code 2022 - Day 3 + +""" + + +with open("day3.txt", "r") as file: + input = file.read().split("\n") + + +input = [(sack[0:len(sack)//2], sack[len(sack)//2:]) for sack in input] + + +def getPriority(letter): + return ord(letter)-ord("a")+1 if letter.islower() else ord(letter)-ord("A")+27 + + +score = 0 + +for sack in input: + print(sack) + for letter in sack[0]: + if letter in sack[1]: + score += getPriority(letter) + break +print(score) + diff --git a/day3.txt b/day3.txt new file mode 100644 index 0000000..f91a263 --- /dev/null +++ b/day3.txt @@ -0,0 +1,300 @@ +QLFdFCdlLcVqdvFLnFLSSShZwptfHHhfZZZpSwfmHp +rTJRjjbJTgzDJjdsRsfwtfNwtfmZpZNhmmzt +bMdJjsjglnVMFCCc +BZvZMBBBMTtZTgcCPdgtgQCrrV +VspNDDpsGDGnRmRpRplQdrrPcPCjgDCcPQCQQj +RVnsmspnpwFRlHGRwHHlnRSThSSvBTbFTZMqTMZMTZFh +ttffrVJWtWpgtQnZGVnNSLTHSZ +jRsjjmhdRcjcRsFcdwGLMZSnHMTSMNZN +RjczlvjhPCcPjcvRpbglWplJBblqrGgq +NwCWwdNQNDCwGpWNQwmJtZgPZrdJgLZcPhLddr +blqpnFTqrLbcLPtV +MnjqSSpqlFRvSqNDGHvWHQDwfWmm +jfLljlQhDLmlrMJQtJTJrQqQ +NpBbjjsdMCgCCMrb +dwspwGnSHHGsGzDDlFDjVWjfZWnP +wQhTZwvpZFZdqWLnnwSrWC +mfDmMFlDcPLdgDSCLCqg +PmzclsMclMlFsHHsJZFHpT +LfLJWNdJnBLfhndfWdZqcgDZgSqgCCSSSLDF +bQVQmrrjPqQDZSZBCQ +RRtGjVmRsPbPrrnNNpNHHnBnpHns +PfbGNwGBwNcPTbGNQFBVjsjztVztVjHV +hrdCJhmlJhZrLDRmghrmDrzqFsbgtbHqnznzznQtbjtz +WdZdDJCDmrJmLZrLDLDZlClcSccwSPbNPfSNWfGNNWMGNc +QwrnTSgqgFShSdfHPdbS +BGdjmMmZMvfhvCZZPf +BzGmzVGGGzmzGpVBtdnQqqdTQQDDqrpR +PPRPwLQlLtbPmbwgJhrSssNlhhrgsZ +fFTdFvTMNfzVnFqdnjgSSjjsSjhghpJs +dvczcFzNTWVWMFLcLbQQwmbHLCLL +HhLLDfMmTjsjmLmhsmmfZMjGtpGJtdcvnCWtZJcWGddttW +gwrwwgzwgDpJddrJDr +SBwBBbgVsVmRRhDM +SZdmfdZRTQZTQgHVVGGRqZdVCjCcNCNcJRWcCBbJjCPCsNsc +FnhzMMhDDFlzlnvpwMLrMDCsbcjNJbcJbBcBfPhCNbWj +wzwnpDDnLvFnLlttLrzGgTVGQqZtTqSqSdfZTg +FJJWWWrCGWdmzFlTVqqlMhmvVlNh +btpgtfjZjjhgggrNMThl +DpwpfRZDZwwfwjsnjfsZnnnwGcCRCHcCCCLGHLWcrcFCWCHW +ljHHHBtjQthchhZpqqNt +FTmJnPFwzlJPmzTgTgbFwJbMCpbMchhhqbhWCDMDhZcppM +JwlFGwVGnFFGBGjdSsfdsG +QsvpGhjGgswvjjwjjjvPpThJfLZCCLCSSLbFLStCFCSgtH +mDrzdzMqqnMrDMmZnqnzNVRCStlCHFSCtJqlCLFCFLfJfJ +mBDzNRWBDDMBpGsZcGZWGjPp +SlLQhQsvvttFlWsWcfHHMTJfwSHwTfTf +VZmmrRDRfpTHJcRf +jzBnDDgjPchWlsQsBW +LTLVdTSLNTLnTSnrWvdwswsfmJwmwGsffH +FbgCbRRppCpPbgMcZvCcGftGGltwHwGtplQQsfJw +CRBMCvZZRgMgBbDCPcDrjLzWLVrSSzShSSNrBS +hVJJjhjRVRZjQvDfBstsBVNBdwstHsld +pCTCcMqCThTFLFFPWcWSPHtwwdmcBHHmNtHdmwmwBl +rMTCCWPLLPCMFhDnDrjzRrfDJD +pqMpCvMchvFNWSBdVNqQ +zDRJJDGJJtNtmGRRWVdFWWVdSfjb +DDJLmnJmzwGmGLTPhTCNpgcrpv +cpPpbPWVprWcbJrrwpCwwdWrvNNFRqzNnChgqFzFnZvqFlzq +fTtHLfSHSsNDGLSmsLvnhFqzhzlzDhhvRlFz +mSMLHTQTmHMSfBSMTPdBJJNNVddrVrbjbJ +zpCpBTnFgFbncznbblzdhRswdlJsLllJdw +QqqmtWVPWvHDVmqDhjsljwRhlZldhRMQ +tWSHDmVfmrtPHVgGRRbgTRpSgpTc +ssTbzFRtPRwTFZtvbPRMhndBqMMvMBHJnnHMMd +WQVWzlGWVBqqdMQJMq +pVSpSSgLfjDzWrLGWWjDzzfLtbRFFNtPZRssspsNRZcRsNZb +jnPzzGlnnznWnzhvGnnpVFrZmVFcgjrrmZRFtj +fsbgTdwdqBbfwCptVtdZRcrRCp +gsMbgfHsBSwsGhhJWMLnWPPJ +bpmbJpNbbbNGGmRJzJTsfdsvsNdglfhssCvC +hWLwQjZjLhjHFFBLZldvvflrvtfjCrfjlT +QWVQZZFDcDJJhJJc +RmRghgRlNgfGGRmdGqhsgsZFZZpBvHpZppHcgH +tbLCDLnLtSbbbjtPtMLtDPTvHHBpcHcsHvTcHsmZcF +rSLrMJzDznzGmhNlVwdrRr +vWjljMWcnSSpjmzbJVzJrTCmtGJV +NZDDQLRqPJrPzrprTC +gqDqqwpdHWhlgnjH +ccptcpstDvbNvHbLNRZZ +dFjhdnjQFJlFCQSjgngJPJgWWrRNWNRtNCzrVbRzNVzZZL +PhThFSPPSpsmTcqMwt +cLcLlMhGMGcpGzslHFHFvnHlBDvWbT +VHdQwqPJdPwjJPdPQRrmjjjQnTFrbvNWFFffDvbvvNDvbBNN +RwRJCHmmdQJZZLzGphcCtz +hVvFVjvjVWmFRQVZqTpqtwQpwpqZfp +gvDlSBDJSlPLcLdDwzwtptqTTTzwcCCt +JgrJGbLgvnWsmvVr +rwmqqRqrnHQGmnjCCqCzdBzCBJBz +hFLgbWWPWmvtLhPtgpcdjJdcBJdpJjDsgp +lvfhSSPWtTNTTZZmfr +bHDDssRHsjNMbJjJLQJsbTtGvSCzCGQCTzGvSqSBzT +mmVrwhmmpfPStnTSBnhStG +pcwrptZcgFcmpgHRDjjZlDJsjbbD +JJRrmFqJMdFFJMjjJcqGgzSCSHSCscPCHPHGZc +VWpWptnvSmpPGCHC +vQnDLBmbntvLBbnlldTQFlJlFFrNRd +LPDftnHFQfwmBcBGmc +CVqRsdqvdrlsCVsNvqwwSpTNSSDSDDBBTTSN +lqlDRddjbblRbRqrlRRjsbvghHHnPQWjHWQWZHPHWZhFnP +bwQsDcgsJqcsDpcQRQnpqtVSVvgSMMMfMvfVBVfdvM +CGZFrHHPrTZNGGZZHmCZHlVfjfzjSfzBtBBNSBVjvntf +ChrCCLGrTlhJnhDncRbp +nmFnhfTQjSzfjddZWsRRRFRFGl +HDgCwgtQbZlHsrqHHr +cJPCgCCPbpbgDMPvMQnjmnhTfmzLpQQmjz +QFHSQdNMCSgcSgFtttPNFJpCpnTjZlbblpppZplZjz +LqLsWMRRfrrWMmMGpbTnbppbZnTjpnmm +fWBrMqWsGswGfGRMMwrLgtPPdNFBQPHNHNPPcFPP +dngbSppJSSppbVMZQQMjqfQQgwcl +TWmSWtvCRCWjwfjqQqMstq +FhFvRzSTNmhHnVPhGhBJdBpB +gcHPgzGmPPwTsSTsbwbdWD +QjBLLfVhhBqqBFQLrLjVFlNpNDtsSWTDdNptdbqbdS +jCMFLVjFBFjJJLFFMVBFrLnvPzHRmHPGnGWWcCvzHRZm +PDPqWWjhPpPbCsjwjTVbLT +SrtCttGRMddSVwHFSs +JtfvttmrGMRRJzJCqhqqqWQZhCNgJZ +ChrCVFQCVQlwQNwpQcmmcjmWBmddghjjdW +sbDTZStTqqfSBggPmWjWWNsL +THqqSHDTtZTDTHZZbHTzRzFvlFCVprFprQVnCzNppQrz +PdfWCwMWjPSrdgCMnnlGsGQvvpJZvFGnps +DmBhVBLbbVqVBzTRLBRzzTLNNpRQNNZQZppZvlQpZvllvF +zVDtVHBbbTbzDbrjgWjMPtMWPMlj +JLsTTNDsgTMNvDQpLpGpLGNJShrfzCFnSnSrnfzCfTFhWrfw +ZcqrRddHZZVRfzWnVWCzWFnn +tZHZtrHHPdRtdHlcccQggsplpJDNvMGNGMss +cMCLfStfMTCjPMPcGzjftMbgsRNmRgmmGsmnJbNJbghJ +QHVVWrFFWZNShHSgbSJm +qZwwrrpqpZpZFvqrQdFlQVSwLBMBfTTLTjLBCcdTMzMftPPB +SwsdBTvgvJLPNptpCpCmBDtn +wffrzwGFWFNZWpjWZnNm +zrfflbRwJPhbPbsS +HjHHRtwjnjRblQRttHwQGvGWNNBWvqGzfTvfNN +FmScCcrsdVZrpBrVcCVFzffvzzmWGLWgqWqgGWzW +SFVSDDBdsdDSJhnjJltJbPtHRM +FjGFVqWrzQFlQrZzGQzFLTvfwwTgMnvcnbRMLRdnfb +CCttSNsSnRfgncSg +CNspmDBPtPmJJNBJPNpDhQZVzQlhqrGZflfVjQFrQj +dNNdHWcmdmPPptmmWHpPTFFjJPGrQsVsPQGGGJVDrVVGrS +MhZlZhlgflgfnfDtjbjJGbtnVtGS +LtZqlzhzqMZWHHLwdHmFWp +llNRlfwWRwwLlwFNNgRrVCBjdjCVdjpWjtVWCD +HTQqzPqzQPmhhmSPznSsssJtdnMZddtMCjprtMjCnBVnjZ +PzHQmqsGSJPSmQqPbfwNcgNbNgNfBGwR +lPdzlZPzQzMZQGQrTZvvpjHTTpfsTTZb +zRShhtWRnqnqSNRnDTTHvfNJspNsLpTsjL +hBVncVtDSnhDnDBBtGrlzwmmMlGmVrMdrP +HPTZVHVPlHDPlfgnjJFdJdjPjSPqCS +hLRRBhwGhqbtmsRSSSjjdMJjnJGSMj +QrQtqrRrcQDgVglc +ZTwbbZdchZZjmVWHTrHWBVJtBB +glslCDqLLDfGRqlsgLssfrCHBHFHmrHBBppFmCJWWp +fRzvvvgGgNSNvmQbSQ +qPGGPwCTqTzHCvPGqWdLFLssLpstLLspvd +njJchhcbjbDrbcLNlLrpWWrLLHgp +DQhMMMJQMQJnVbbnRHSMPwZmGZPZRTRCwTZmZGwz +zzGNfPbcgdPqLrqvWWVzMq +DGmJtnJTJRhhJMhCQqCLCLrrLM +ZnHDtSZlTBHnBdccGSfGcwjjdb +FpZDpQZDvMwZpCCMdCBPpJGPPLgJGGLffJJL +jlbswNrlPPJJfGlf +bnNwqbHnNwRSrqhbdCcmHddQzddFDdvZ +gbQQQngWPVVtvvPQNVNvWWSHGwDsCCmDtHSlmrssDmHs +fqhMLFFMMZqZMRZqMjRMqLJSCdFlrrldsDrCsDSSHHGCSC +MJRZLZLGMcTqczjNPzNnzPvWBVgNnP +gqdbBffTvlRHbwLl +nMMQJQpGdsFpQsJzNMRLLDlmLLmjFFmLjDRF +pzGMnVcMBfTdtBBV +WSbfmrrrrWdbWmdfDSSStmHjtMtvCLVnqBHCVGtVGnMM +lRcgFRZhJgnMLjvGgv +lcvwTcFTplvwphzcTTJTbsdsPSPDdbmzmDSWPsSm +bbdTjTQTQMsZNqqhJrZslg +jFGVjwfCPVGfwjCVqWhWZFgqWrglllNN +PjfSPzRBjCCfSBCGBLznTndHcdMLbMmmdT +wSVMJSVccdGwGnsgbVTTbRsCRNgN +rHjhHLmrhPJrqjNTRDgBbbRRRs +zqmPPqqpPLzltrMdJcZpfdpGWWJJ +ZhrBBJGrgJhGHttGGVPPcPPF +cnzLqNssfRnpfWqsLfcfWQNMbMVPDtnDtbHFtMbPtVPFFM +jfqzCCLsWQLcjgldjmljmgTd +wghGSSGZPVwgqtwtwCCtFFMM +BvbspnBznvvWHWHHHbCQptQFQlFcqMClqLLq +JWzzsJHWzfWjJrvMBWHBBGDmVDrVhZmmgSPSmZVVrh +ccRMJRsjjgJgcPCSCCVCwsSWVNzp +WQQqnmrBWtqWqdSbVwwBSpbbCSBB +QvDqmqqmgWPWjPvW +msqpjDWspRWwvFvDWWhnbbJfPzFQblJJPlnz +gGGrMTgLVBsBBLdsVTrSCBffHQfdHhnbPPPPffndlbzh +ZCVsCGSScsLZpwNpqmZRqW +PPsGmJPVPQPZmsQCVPJPnPCMDcTcdqDDTqvFhvnTjRDTDchq +BdrtzNBLHStHrdrlwfNThvFhcvbDccThjbFBqq +SSgdHNfSHHgzLHtLNWSPQQPMQVpmmppVCmQZCW +pPssrWWLdndHPJdd +QNQFTLNBFTzzgjfGTjffFNZjCSGnHDnSDJHnDScttDCcDnmd +FVzVLZwZZgswqqrbphbR +VpWCZjCwWnppZpqnhNjjNZjFLtLzQJHdHLQRzWLRzRztHJ +DMGPmPMgTSmsgQzRFbdHRLJgdn +csDMPMGDDvMSSPnDTvrDChhwljlqNNjchNCjNVcf +WpGGmbSGpVWWpjMMTNdfCFNdFfRNwNSF +JsQztzrvrJqsTTRbbvFBhhhv +cLrDqLccsLqbDHGpZWDHgjGlZW +QGMQJMmsJmMCmmqjsRvLvvdgvgVvDVdD +BDcrcNbNppwTpzRdvvchhFvfFv +plBBwWrbpQHDjGmGJl +mzFlTdmSDzrPvCJqqDVVNC +hfRmhgjRhnfwnRHcnhGGvPJQPvvfLfQvNLGv +BhhnjMgRWghpwjRWMRjrZzdbSbsdstTrltdmMs +bLLnbqjpvplnDvNlqpqBWJZSdPJCNdJJThhSPhTd +HFwHHQMMFHGzGwRPPJPTWthTZtJSQr +mfWMHFHWHmgmFcwGwwpbDljqjBDcDnLcVnlb +wBrWBwSWRJMBwdZnPQPgFnwGVF +fLjfbsvDDfvvqqGqZGqmPQgqTGGG +vZLsjzjjZCzJWRNSBR +jTRbRHHqPqTRBHqdjhgvgghhZQdDvvgvhC +WLWWzzFszsmNFGWSFmMrpghCtZvhlQNDgQCDgctC +FJsLsSrDmsFSDLWrzJmmMsGqjRBVbJTBVPVBbBqRjPBjHn +QbwwnDDQDcDfSbDbfhhrvrCtJMvJSCvvJh +FWRjjLjmdZWdWNBFNWNlNQQrMGvvMGgssGvQRvrMJs +BjWdlBpmdmBWFWdpWfPfpVnVwfHpqPQDbq +SqrvlMldqvSWdGPTGzWpWpzpHP +tRwmhtbsRRFsLwGGTVDHppTNdbVp +FRCRQdCFtCLmBhCcmmQdhFdCvnfjffjZlZnjSnvfcSrrgMgn +GQQtNJQWWcqPPhMMtwqD +WpWLlBWZCvhjwMMZqDDP +WgvmLVmHCbpppLgdllHddvCmFGzGnfsJJQJsJncSsccFVffF +HcSsSlTTvvPPWWNMWWgPTPPbGbbrwJQbrrDphrHJJRpRhp +ztfLqqzmRwDGlLDb +fdVtmqjdZBmSvjsPSWlTgv +DPvDhhMRRMhRNDLPMNsbwHwrjgnddqddrWdPtHzr +pcBGSpcVBfJWCcmJGGwHtzgrrtwqzdrtrngG +mllBlBZmMlQWRbQv +SGZBSFMZllJWmzvfpp +NTqbNrhHNHWgNqHrNhNQbbjHJLcnfnzLLnLmfcfccJcfQLcL +HggbTNRRTHqqbVSGMSZVWDMDwVPs +SBsSlvbPlFPvRlbPsMFZLgVLrLsJVgzrCJfVCH +jcNddNdGzZrVgNVJ +tTGwdcmWGdtwQmwmwZdwSlhBPbhPTBFRhlhSMFMR +RzStzTzzvvQvSHVvhVgBqMMFqhPM +ddlLLwNVLWLjbbLrjrbWrwmlhcFmBGgFMMPgBcGBBqPhggMs +dLwdVCVWWdfNwNwLrWrbfbJNptzDDHRnHptHtznHTppnQCtR +RzcfMBHLzpDQFmnDSWNB +dbqjtjVqJZZGjPGJCPGbPndNNDglrmQmNSDgSlSSng +hjCTqhCJbhVCGNvMcfvhfRLhvchz +sDDqDMtqshJhPvhhCpSCCWlZHSWp +bffRcbBGGTwGfGfbNjgSHZSgWwplHCClZZ +RTQBbcnbRNmGbGTQLbmbJVqLllsDVMsPDVVvttMd +nbLBjnqwgfRRBgBwnllbLlwScvPdZPcScZPcdFZJPvZPvcMZ +tChQpphHrrHztssZdcDJcPZcMvWv +hpTHVMQMtQtVpzBfwjfRnfwfnjVl +ljJlvvJQlrlcJcWpPzgthnPnzMgpgSpC +smtmZBmHZTVttHmqFqmzCSZSdndzShPNgPShgP +bVqFHLqLqfHHFwbBLHcwDQrDrtjlQvGjlRQQ +pwhVsPvVVCFtmhPhzqGqqZMZvGTTTMlGWM +drrrrDfDRrNQdQdrRrBdjGWqWqWlGlGtlGbGZGBTLc +tSDfgnHrdDtVSPSshJCSPh +WlWlDqhglLhsdgrcbFdJJpPpdBbB +ZQZvSvzRMSzjZjvZmMMpbFPQFVBrVbPcpbJFLB +SwGZmjvCRSMRjMzZvRnstHftNfswHsflLhNWHf +jsprCvGRQrtjCsQrGsrzvGHhgmHVmHZgggmMGVmhMbHm +FFFdDSdwSffJWqqMzzMmDVbZ +LLcdcfcfPwwBzdTTdtvlsrjCtvPvprnsjR +MvtSqNSWMzjwzFTD +ZRPlcRpQszNgszNwVT +bcZcrcPlcPLLLZllPlbcbLSBfWCvHvWWNSmSqNqfWN +rNdZpMGnddgggwHwzRPCzDDD +vcvhcTLhZLhLPCPHPDPPVvzH +LTmBmthWBchWLttttFJFLlFnGJNsfpdjNsnMnMpnpZdssn +ZHWFCvqBDdqqqCTDHHBWrgppTMhhVpspMPQcSgQVPS +jblbGffntRwltfMQVrrQscphfg +ztJrGtbwGztbmtzzRGnRznWNNCWmHHdFHdFNWWHHqCqZ +WGWSSZvVvqmrmzPm +NgjtwFFlwDsFghNsMtlcjljcPqrQHcZzQznpQQprnqqzHQ +tgMCwNhtgbdLZRbZCT +PQSPQrSGZnGnVFhpVhRRlvLvBDRV +tjctcjTMMpDTvFTlRD +JCftsccFCcmsJJGZGGmPHnQrGwGS +TrjRFFRnpnRCHNFSjSRrffJvJfzqQBsjqQqzzffd +ZtlgMDhZhgmGDLVZLlGtLPqdQQvvfBJJqzzBPdMzdd +VlLDgLLDWtGZwgtRNTNrFTqCwqHTrr +LpcDFDMMPjMLLjpcDGCHgHssGHWnbCBWBHvm +QfZhrhVVdZThlZlfVvVzZrTbgQnBHsCCHgJBsCsJBHmBmn +wwtvfZztlTVlhtrzzlLNpFFRjMPDpRcPFwRj +VzZhhQHQJJWJSSFWDGclbmNPgglPgVGc +ddBTqCjjBCcrqrCRrwGPGmmDGmbpBGNpNNgg +CRMjwsjwsLdLRrQFJSvMFMWZcHFW +JgJJPvtrhRPQQzSRMQFFSF +BLqsjsdLsMBqblnsGbBqVqdwSQSCSWwNFwczQWCNNwNCHn +ljqbpLbbdDlbDbqDDVtMttTTgpJJgThhJrJr +nflndmjbSnlTQGwvWGPHGRGj +NtstcMcDJMvwgHfFvDgR +qqqpLrMsLLqLNNnzbrdlbZSrznfz +ttZCCFjNjnPVCFQPPFbbStrzqzqrrrcwtmJJ +gTTMRMTWsTGGTddHTTbBzBLSmqbbJGzGmqqb +HpgpMTvRhHHTRDhMsHdHDRhjJlVPJjNFJnnFpQQVfPCjnP +VqJVQPpjQqPBbHwldmLfVVmd +tMGvrzzDGCDDddwLbgLvLwcm +TWDWCzTZDGMZtzWWtsFhbRRqRQRjhbNQBBTh +zgLgLHnnzCCvnsHSsZBZBsTRdD +rslllhJjcQNNGjpWJlSRTRdwBVSSNTPVSdPB +jGrGqjJfqccrfqGcGplrJpFvzggqmCtMzmsMnvMvvCgm \ No newline at end of file diff --git a/day3_2.py b/day3_2.py new file mode 100644 index 0000000..7bc0f1c --- /dev/null +++ b/day3_2.py @@ -0,0 +1,23 @@ +""" +Advent of Code 2022 - Day 3 - Part 2 + +""" + + +with open("day3.txt", "r") as file: + input = file.read().split("\n") + + + + +def getPriority(letter): + return ord(letter)-ord("a")+1 if letter.islower() else ord(letter)-ord("A")+27 + + +score = 0 +for i in range(0, len(input),3): + for letter in input[i]: + if letter in input[i+1] and letter in input[i+2]: + score += getPriority(letter) + break +print(score) \ No newline at end of file diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..e69de29