fun main() {

    fun printTree(root: Node) {
        val currNode = root.getName()
        var children = ""
        if (root.isFile() || root.getChildren().isEmpty()) {
            return
        }
        for (child in root.getChildren()) {
            children = children + ", " + child.value.getName()
            printTree(child.value)
        }
        println("Node: $currNode")
        println("Children: $children")
    }

    fun computeSize(root: Node): Int {
        var size = 0
        if (root.getSize() != -1) {
            return root.getSize()
        }
        for (child in root.getChildren()) {
            size += computeSize(child.value)
        }
        root.setSize(size)
        return size
    }

    fun computeDirSum(root: Node): Int {
        var sum = 0
        if (!root.isFile() && root.getSize() < 100000) {
            sum += root.getSize()
        }
        for (child in root.getChildren()) {
            sum += computeDirSum(child.value)
        }
        return sum
    }

    fun findDirToDelete(root: Node, minSizeToDelete: Int, currentSizeToDelete: Int): Int {
        var sizeToDelete = currentSizeToDelete
        if (!root.isFile() && root.getSize() > minSizeToDelete && root.getSize() < currentSizeToDelete) {
            sizeToDelete = root.getSize()
        }
        for (child in root.getChildren()) {
            val childMinSize = findDirToDelete(child.value, minSizeToDelete, sizeToDelete)
            if (childMinSize < sizeToDelete) {
                sizeToDelete = childMinSize
            }
        }
        return sizeToDelete
    }

    fun getTree(commands: List<String>) : Node {
        val tree = Node("/", Node.Type.DIR, null)

        var currentNode: Node = tree
        for(command in commands) {
            if (command.startsWith("$")) {
                // System command
                val parts = command.split(" ")
                val action = parts[1]
                if (action == "ls") {
                    // nothing to do
                } else if (action == "cd") {
                    val destination = parts[2]
                    if (destination == "/") {
                        continue
                    } else if (destination == "..") {
                        currentNode = currentNode.getParent()!!
                    } else {
                        currentNode = currentNode.getDir(destination)
                    }
                } else {
                    throw Exception("Unknown action")
                }
            } else {
                // File or dir
                if (command.startsWith("dir")) {
                    val parts = command.split(" ")
                    val name = parts[1]
                    val child = Node(name, Node.Type.DIR, currentNode)
                    currentNode.addChild(child)
                } else {
                    val parts = command.split(" ")
                    val size = parts[0].toInt()
                    val name = parts[1]
                    val child = Node(name, Node.Type.FILE, currentNode)
                    child.setSize(size)
                    currentNode.addChild(child)
                }

            }
        }
        computeSize(tree)
        return tree
    }

    fun part1(commands: List<String>): Int {
        val tree = getTree(commands)
        return computeDirSum(tree)
    }

    fun part2(commands: List<String>): Int {
        val tree = getTree(commands)
        val fileTotalSize = tree.getSize()
        val totalSpace = 70000000
        val freeSpace = totalSpace - fileTotalSize
        val minSpaceToFree = 30000000 - freeSpace

        return findDirToDelete(tree, minSpaceToFree, tree.getSize())
    }

    val rawInput = "\$ cd /,\$ ls,dir bcfwbq,14779 cmss,dir ctctt,101350 gpbswq.njr,270744 mglrchsr,260405 qtvftbl,dir rbsrpg,dir rzgnbgv,dir svsgnbs,dir wqctlzz,71582 wrqbm,\$ cd bcfwbq,\$ ls,dir bsbpc,dir gpbswq,172204 lpn.qjd,269121 lts.zjd,dir pfps,dir phvgmv,dir pjcrwh,dir pvf,dir rthpbmhr,dir sjnvdz,\$ cd bsbpc,\$ ls,191305 hlqptq.nrj,15627 lts.zjd,\$ cd ..,\$ cd gpbswq,\$ ls,dir ctctt,dir jcw,dir jnh,53143 lts.zjd,dir qrrjgdbd,dir tnsjg,\$ cd ctctt,\$ ls,dir hhmm,\$ cd hhmm,\$ ls,89761 brfjczv.lmr,226384 gwqfwwp.ctl,174778 pgsdmfj,\$ cd ..,\$ cd ..,\$ cd jcw,\$ ls,149585 gpbswq.lbv,\$ cd ..,\$ cd jnh,\$ ls,10840 ctctt,dir fzplg,dir jvpc,dir lpn,dir mcz,48063 nczc,8024 rthpbmhr.qwq,65222 vqgbgm,\$ cd fzplg,\$ ls,34828 lpn.vcl,dir svsgnbs,\$ cd svsgnbs,\$ ls,216427 bvtl,242012 gpbswq.qlg,dir gsmltmw,11388 lpn.trp,dir lrr,dir vwqlvj,\$ cd gsmltmw,\$ ls,66467 pldhhjch,\$ cd ..,\$ cd lrr,\$ ls,dir ctctt,dir lpn,16831 lts.zjd,dir svsgnbs,dir tdpmdfgd,177469 wct.njp,\$ cd ctctt,\$ ls,145394 phd.tvj,\$ cd ..,\$ cd lpn,\$ ls,dir svsgnbs,\$ cd svsgnbs,\$ ls,148504 ctctt.vjd,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,245750 ggbhsgz.snc,\$ cd ..,\$ cd tdpmdfgd,\$ ls,dir cghfclv,dir mcfzvlvw,dir mdgvcgbc,\$ cd cghfclv,\$ ls,49162 shwslwsf.lww,\$ cd ..,\$ cd mcfzvlvw,\$ ls,dir bsbswh,\$ cd bsbswh,\$ ls,dir hqsdsp,\$ cd hqsdsp,\$ ls,70065 pldhhjch,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd mdgvcgbc,\$ ls,235514 dhfms.nwl,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd vwqlvj,\$ ls,269473 jwv.dqh,90324 mglrchsr,194977 rwgsvszh.jbf,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd jvpc,\$ ls,dir rdgqr,dir sspn,\$ cd rdgqr,\$ ls,dir qcjccsth,\$ cd qcjccsth,\$ ls,dir rqwvslc,\$ cd rqwvslc,\$ ls,275985 pgqph.lcn,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd sspn,\$ ls,200316 gpbswq,162820 pldhhjch,\$ cd ..,\$ cd ..,\$ cd lpn,\$ ls,277995 hlqptq.nrj,\$ cd ..,\$ cd mcz,\$ ls,dir fjtj,157693 gqfgrfqw.wtc,dir jqbpcd,206235 lpn,54229 mglrchsr,238506 rthpbmhr,dir snr,dir ztlrtgjl,\$ cd fjtj,\$ ls,240610 fbwzn,207688 hlqptq.nrj,150032 lts.zjd,48060 mcrgn,265551 zqrnt.srf,\$ cd ..,\$ cd jqbpcd,\$ ls,256141 ctctt.nbp,dir gpbswq,78480 hmddcjdd.bmc,31403 lpn,120619 mvdfjzdr,dir nqgvl,\$ cd gpbswq,\$ ls,125791 ctctt,\$ cd ..,\$ cd nqgvl,\$ ls,174465 jrbfcvf.rqr,144210 lts.zjd,258976 rthpbmhr,\$ cd ..,\$ cd ..,\$ cd snr,\$ ls,185943 rthpbmhr.jhb,\$ cd ..,\$ cd ztlrtgjl,\$ ls,232309 ntlzfsz.vjd,254942 zhrds.nbp,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd qrrjgdbd,\$ ls,dir gpbswq,\$ cd gpbswq,\$ ls,170768 rthpbmhr.qwf,\$ cd ..,\$ cd ..,\$ cd tnsjg,\$ ls,242206 bjmgvmp.hht,245356 frtdp,dir jrflhz,128115 lpn,120081 rfhs,dir sfplvt,dir tts,114165 zfl.ccr,\$ cd jrflhz,\$ ls,dir gpbswq,dir nnlzjwts,dir sctf,\$ cd gpbswq,\$ ls,121401 mglrchsr,\$ cd ..,\$ cd nnlzjwts,\$ ls,dir gljnss,165011 lts.zjd,69364 svsgnbs.bqm,\$ cd gljnss,\$ ls,181850 cfjbd.fmj,\$ cd ..,\$ cd ..,\$ cd sctf,\$ ls,109435 gqfgrfqw.wtc,146343 lpn.mbs,255948 svsgnbs.hbf,231472 vdrfwqwv.pzf,263352 zgzj,\$ cd ..,\$ cd ..,\$ cd sfplvt,\$ ls,51580 hlqptq.nrj,dir mldph,\$ cd mldph,\$ ls,163815 hsnw,\$ cd ..,\$ cd ..,\$ cd tts,\$ ls,dir ctctt,211239 rpm,dir rthpbmhr,dir wpnnrzb,\$ cd ctctt,\$ ls,dir ctctt,137333 hshpfwl,183146 srd,\$ cd ctctt,\$ ls,89470 hlqptq.nrj,\$ cd ..,\$ cd ..,\$ cd rthpbmhr,\$ ls,139569 fhjlbrmp.phd,223589 jvrs.bpj,198566 rthpbmhr.qdr,\$ cd ..,\$ cd wpnnrzb,\$ ls,dir ctctt,158058 fjtcc,dir jqqhgjv,dir qvbvvb,16429 wds.hpj,\$ cd ctctt,\$ ls,166551 gcjt.wld,233189 gpbswq.mls,193694 rthpbmhr.rvz,dir svsgnbs,\$ cd svsgnbs,\$ ls,248185 fpssfvd.zft,215781 rwtg.gch,\$ cd ..,\$ cd ..,\$ cd jqqhgjv,\$ ls,dir gpbswq,14842 lts.zjd,dir mqp,258342 pldhhjch,103492 sddj.sbq,248024 svsgnbs,\$ cd gpbswq,\$ ls,dir sqchbqc,176209 vdq.jbz,\$ cd sqchbqc,\$ ls,dir cphf,\$ cd cphf,\$ ls,253613 snzbgfs.rjf,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd mqp,\$ ls,10090 mfw,\$ cd ..,\$ cd ..,\$ cd qvbvvb,\$ ls,dir mzw,dir svsgnbs,\$ cd mzw,\$ ls,98994 mmv.hcl,\$ cd ..,\$ cd svsgnbs,\$ ls,108748 lts.zjd,10351 mglrchsr,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd pfps,\$ ls,dir cpp,110535 mglrchsr,120669 qvh.fbm,\$ cd cpp,\$ ls,dir htnmrjpq,\$ cd htnmrjpq,\$ ls,120225 bdjmsbg.wfz,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd phvgmv,\$ ls,113550 pldhhjch,31171 zcfm,\$ cd ..,\$ cd pjcrwh,\$ ls,265625 snbjdmg.jtn,\$ cd ..,\$ cd pvf,\$ ls,91010 ctctt,dir hdz,dir qtwfpmvz,\$ cd hdz,\$ ls,103787 rlnrs,\$ cd ..,\$ cd qtwfpmvz,\$ ls,244905 lts.zjd,\$ cd ..,\$ cd ..,\$ cd rthpbmhr,\$ ls,dir phq,dir svsgnbs,dir wzwfz,dir zpwfj,\$ cd phq,\$ ls,91709 bzfnqh,dir ccwqrjn,dir gpbswq,dir svsgnbs,\$ cd ccwqrjn,\$ ls,8953 fffqzmqp,dir ftnb,dir svsgnbs,\$ cd ftnb,\$ ls,226615 rthpbmhr,\$ cd ..,\$ cd svsgnbs,\$ ls,dir bhnnm,dir tjrqtmd,\$ cd bhnnm,\$ ls,dir prfqw,\$ cd prfqw,\$ ls,dir hzsjlq,\$ cd hzsjlq,\$ ls,99285 cfpwbvp,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd tjrqtmd,\$ ls,237461 cqr.wfj,149955 zchnb,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd gpbswq,\$ ls,dir bqqtnfb,dir ctctt,261108 gpbswq,135193 hnrflng,264503 jrp.bls,224864 mghhgrj.tgp,dir pljbtbn,dir rthpbmhr,244222 svsgnbs.rzp,\$ cd bqqtnfb,\$ ls,dir jnzfr,\$ cd jnzfr,\$ ls,dir bdrqmr,168907 pldhhjch,\$ cd bdrqmr,\$ ls,151767 vfw.jjc,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ctctt,\$ ls,dir zdsshmr,\$ cd zdsshmr,\$ ls,77208 hlqptq.nrj,\$ cd ..,\$ cd ..,\$ cd pljbtbn,\$ ls,63719 hlqptq.nrj,103719 jjctg.dhw,547 tljz.wnv,\$ cd ..,\$ cd rthpbmhr,\$ ls,dir sjbfhcpc,\$ cd sjbfhcpc,\$ ls,184946 sgpgszw,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,dir ctctt,dir flzsvb,dir pbw,23408 qprlnvwv.jmz,dir wjhplc,\$ cd ctctt,\$ ls,11507 cnf,dir gpbswq,87778 rthpbmhr.wzv,dir slmbb,dir sqc,75556 wsbzwn.mpf,\$ cd gpbswq,\$ ls,173498 dsg,202811 msvs.szd,208419 pldhhjch,\$ cd ..,\$ cd slmbb,\$ ls,dir jcth,dir njldhbln,\$ cd jcth,\$ ls,6106 hlqptq.nrj,\$ cd ..,\$ cd njldhbln,\$ ls,241153 mvnvzqfc.rtn,\$ cd ..,\$ cd ..,\$ cd sqc,\$ ls,dir zhrc,\$ cd zhrc,\$ ls,dir qswqqzb,\$ cd qswqqzb,\$ ls,264937 btqmqn.hqv,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd flzsvb,\$ ls,58735 hlqptq.nrj,\$ cd ..,\$ cd pbw,\$ ls,80787 bgfmdg,234807 gqfgrfqw.wtc,44816 pldhhjch,dir qjjpmq,dir rthpbmhr,153500 ssmdz,\$ cd qjjpmq,\$ ls,155209 ctghhsdh,182544 fprdp.ffs,\$ cd ..,\$ cd rthpbmhr,\$ ls,136673 lts.zjd,\$ cd ..,\$ cd ..,\$ cd wjhplc,\$ ls,246593 hhcgnfjb.nbl,29266 hlqptq.nrj,246096 lts.zjd,40242 rrfgvvhg,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,215743 fwm,236816 gqfgrfqw.wtc,235185 sjdlr.rzj,dir ztsgb,\$ cd ztsgb,\$ ls,265998 rthpbmhr.pdp,275979 zqfcprz.wtd,\$ cd ..,\$ cd ..,\$ cd wzwfz,\$ ls,dir bsqwtf,dir ctctt,dir lpng,dir svsgnbs,\$ cd bsqwtf,\$ ls,dir rhjb,dir sgzvb,\$ cd rhjb,\$ ls,166599 rthpbmhr.msg,\$ cd ..,\$ cd sgzvb,\$ ls,185594 zmnb.bcq,\$ cd ..,\$ cd ..,\$ cd ctctt,\$ ls,130367 svsgnbs,17459 tdsztr.fsn,242273 wfs,\$ cd ..,\$ cd lpng,\$ ls,145778 snmcwfg.hjz,\$ cd ..,\$ cd svsgnbs,\$ ls,dir ctctt,dir nqrlzg,dir qczmdfm,54814 wtmjh.jdv,\$ cd ctctt,\$ ls,244171 pldhhjch,\$ cd ..,\$ cd nqrlzg,\$ ls,dir qjhlj,\$ cd qjhlj,\$ ls,dir gncct,\$ cd gncct,\$ ls,141943 wsdgmdd.ctz,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd qczmdfm,\$ ls,4482 lpn.fmp,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd zpwfj,\$ ls,226995 lts.zjd,dir sflcgdm,\$ cd sflcgdm,\$ ls,199168 bjrjrrm.bfw,dir fpcq,24906 gdzfmhz.jhp,7267 hdpzvh.ngg,dir jjsgqb,137796 psws.hvp,\$ cd fpcq,\$ ls,195792 nghcc.wps,\$ cd ..,\$ cd jjsgqb,\$ ls,18774 ctctt,106399 jvbgfhs,208035 rthpbmhr,dir zptz,\$ cd zptz,\$ ls,278792 gqfgrfqw.wtc,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd sjnvdz,\$ ls,dir fchgggp,dir gldg,40164 gnh.gmv,dir lpn,dir njtgjt,81415 qqfm.grb,dir vvcbjct,\$ cd fchgggp,\$ ls,dir fjcclj,dir lpn,145291 lts.zjd,7288 mglrchsr,dir pmhdzvfn,dir qtpdfwh,dir vjwtvb,\$ cd fjcclj,\$ ls,28333 gpbswq.vtg,258676 lts.zjd,\$ cd ..,\$ cd lpn,\$ ls,197797 pldhhjch,\$ cd ..,\$ cd pmhdzvfn,\$ ls,21538 gpbswq.pwq,5451 hqjg,dir llhp,220717 lzqmh.stl,123800 pldhhjch,dir pmv,dir rzs,dir tztv,160018 zfvgjtzr.qth,\$ cd llhp,\$ ls,dir lsft,dir pfjmphs,\$ cd lsft,\$ ls,78424 gpbswq.ddb,101497 gqfgrfqw.wtc,137686 hlqptq.nrj,122325 mglrchsr,\$ cd ..,\$ cd pfjmphs,\$ ls,185141 mbw.gnd,\$ cd ..,\$ cd ..,\$ cd pmv,\$ ls,139255 gqfgrfqw.wtc,272882 hlqptq.nrj,\$ cd ..,\$ cd rzs,\$ ls,dir gpbswq,89153 gpbswq.vcv,81882 gqfgrfqw.wtc,39252 hlqptq.nrj,dir tmcm,\$ cd gpbswq,\$ ls,205674 ctctt.gqd,\$ cd ..,\$ cd tmcm,\$ ls,156591 gmjvzj.wzl,199254 lts.zjd,dir vzhbsdd,dir zfs,\$ cd vzhbsdd,\$ ls,70059 gsgzqgn.fhf,43456 hrttvrqc,\$ cd ..,\$ cd zfs,\$ ls,223726 hlqptq.nrj,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd tztv,\$ ls,200126 lpn.bns,dir wfjwmbj,\$ cd wfjwmbj,\$ ls,120344 gdqgml.gdn,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd qtpdfwh,\$ ls,dir qszjt,\$ cd qszjt,\$ ls,7207 rthpbmhr.rpv,20452 ztdnfmgp.dsb,\$ cd ..,\$ cd ..,\$ cd vjwtvb,\$ ls,dir scswlmn,\$ cd scswlmn,\$ ls,207195 svsgnbs.jqq,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd gldg,\$ ls,119560 ctctt.wbc,203041 gqfgrfqw.wtc,dir hrp,274270 lts.zjd,25081 mhsfdhjr.ndw,dir svsgnbs,\$ cd hrp,\$ ls,dir lpn,\$ cd lpn,\$ ls,dir gpbswq,dir wvrzhdb,\$ cd gpbswq,\$ ls,dir vtgc,\$ cd vtgc,\$ ls,231107 hlqptq.nrj,\$ cd ..,\$ cd ..,\$ cd wvrzhdb,\$ ls,83303 lts.zjd,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,dir fhfqlv,13446 frn.hzg,126475 wmjjjl.cjr,\$ cd fhfqlv,\$ ls,243574 hjn.jzb,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd lpn,\$ ls,dir mqglznd,\$ cd mqglznd,\$ ls,dir gpbswq,177654 gpbswq.zhv,128217 gqfgrfqw.wtc,66750 hlqptq.nrj,136018 hvphz,dir pswvwtf,113363 rthpbmhr.gwz,dir twddrn,\$ cd gpbswq,\$ ls,244278 lts.zjd,dir pfrjwbvl,dir qlrfw,222491 rthpbmhr,\$ cd pfrjwbvl,\$ ls,46802 cfl.ljt,dir ctctt,dir dfqzmd,110525 gshdhsfm,dir jcbw,dir lpn,237385 pldhhjch,15812 prcwhhq.jjh,dir rthpbmhr,260693 zmgq,\$ cd ctctt,\$ ls,6529 hctcg.dpw,188655 lpn.qjf,202221 wjnb,\$ cd ..,\$ cd dfqzmd,\$ ls,197980 ctctt,\$ cd ..,\$ cd jcbw,\$ ls,1281 gpbswq,15778 jfgjlcd.mqh,38803 mdtcrb.dbj,dir qtjbpbs,\$ cd qtjbpbs,\$ ls,59348 mglrchsr,\$ cd ..,\$ cd ..,\$ cd lpn,\$ ls,dir ctctt,dir hsjjp,260465 mglrchsr,\$ cd ctctt,\$ ls,dir wvbrsb,\$ cd wvbrsb,\$ ls,135584 lts.zjd,\$ cd ..,\$ cd ..,\$ cd hsjjp,\$ ls,249448 ddfqnwgf,164051 dsnhsbp.wvv,dir fmzgm,dir gpbswq,113907 gqfgrfqw.wtc,\$ cd fmzgm,\$ ls,150025 ngnqjcj.tbf,\$ cd ..,\$ cd gpbswq,\$ ls,33139 dmgqhf.nzd,dir gpbswq,dir rwd,\$ cd gpbswq,\$ ls,148820 lnqqds.rpg,\$ cd ..,\$ cd rwd,\$ ls,133433 pldhhjch,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd rthpbmhr,\$ ls,262342 fdnr.svq,dir nbpsdm,161791 pldhhjch,6835 qvclr,228110 whf,\$ cd nbpsdm,\$ ls,dir rthpbmhr,dir svsgnbs,\$ cd rthpbmhr,\$ ls,267109 chb,\$ cd ..,\$ cd svsgnbs,\$ ls,150446 rlv.vcc,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd qlrfw,\$ ls,dir sgcpwst,\$ cd sgcpwst,\$ ls,dir fss,\$ cd fss,\$ ls,244165 gpbswq.qtz,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd pswvwtf,\$ ls,162099 jhdrnv.zrd,54856 mglrchsr,dir psdz,169053 qhq,\$ cd psdz,\$ ls,dir lbcf,\$ cd lbcf,\$ ls,218770 ctctt.chv,95266 pldhhjch,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd twddrn,\$ ls,120791 hlqptq.nrj,212213 vffj,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd njtgjt,\$ ls,dir mzwdb,\$ cd mzwdb,\$ ls,108520 lts.zjd,\$ cd ..,\$ cd ..,\$ cd vvcbjct,\$ ls,155890 ctctt.fbw,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ctctt,\$ ls,5656 mpftwp.nds,8998 pldhhjch,185601 snrng.qsv,\$ cd ..,\$ cd rbsrpg,\$ ls,113129 cpwmjw.rbj,dir jdhmlzr,114254 sqj.fzp,120708 svsgnbs.hpn,\$ cd jdhmlzr,\$ ls,dir cdnmflmm,248055 hlqptq.nrj,247942 pldhhjch,dir qrwsnzdv,80053 svsgnbs,219309 zhqgvd.bhw,\$ cd cdnmflmm,\$ ls,83138 lpn.wtg,\$ cd ..,\$ cd qrwsnzdv,\$ ls,197145 zspfb.sbd,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd rzgnbgv,\$ ls,208692 clz,dir tmcqcpfc,dir twlnjr,\$ cd tmcqcpfc,\$ ls,dir jtnf,\$ cd jtnf,\$ ls,242978 fhvtvdff.swr,21748 lwcplzmw,\$ cd ..,\$ cd ..,\$ cd twlnjr,\$ ls,dir ctctt,dir gpbswq,98435 rthpbmhr.pcr,dir snpm,dir svsgnbs,104969 zzd,\$ cd ctctt,\$ ls,200382 pqswsnhp,\$ cd ..,\$ cd gpbswq,\$ ls,90380 qqrfbwn,\$ cd ..,\$ cd snpm,\$ ls,57996 swfjlfh.qft,\$ cd ..,\$ cd svsgnbs,\$ ls,86028 clcfrnr.jwl,199666 ctctt.ftr,200949 ctctt.mrh,23594 dhlmbh.gjt,278047 mbchg,dir pgfhp,\$ cd pgfhp,\$ ls,21555 rlblnvsd,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,155183 jgjj.sgs,28150 pldhhjch,\$ cd ..,\$ cd wqctlzz,\$ ls,23662 mglrchsr,60923 pldhhjch"
    val input = rawInput.split(",")
    println(part1(input))
    println(part2(input))
}
fun main() {

    fun printTree(root: Node) {
        val currNode = root.getName()
        var children = ""
        if (root.isFile() || root.getChildren().isEmpty()) {
            return
        }
        for (child in root.getChildren()) {
            children = children + ", " + child.value.getName()
            printTree(child.value)
        }
        println("Node: $currNode")
        println("Children: $children")
    }

    fun computeSize(root: Node): Int {
        var size = 0
        if (root.getSize() != -1) {
            return root.getSize()
        }
        for (child in root.getChildren()) {
            size += computeSize(child.value)
        }
        root.setSize(size)
        return size
    }

    fun computeDirSum(root: Node): Int {
        var sum = 0
        if (!root.isFile() && root.getSize() < 100000) {
            sum += root.getSize()
        }
        for (child in root.getChildren()) {
            sum += computeDirSum(child.value)
        }
        return sum
    }

    fun findDirToDelete(root: Node, minSizeToDelete: Int, currentSizeToDelete: Int): Int {
        var sizeToDelete = currentSizeToDelete
        if (!root.isFile() && root.getSize() > minSizeToDelete && root.getSize() < currentSizeToDelete) {
            sizeToDelete = root.getSize()
        }
        for (child in root.getChildren()) {
            val childMinSize = findDirToDelete(child.value, minSizeToDelete, sizeToDelete)
            if (childMinSize < sizeToDelete) {
                sizeToDelete = childMinSize
            }
        }
        return sizeToDelete
    }

    fun getTree(commands: List<String>) : Node {
        val tree = Node("/", Node.Type.DIR, null)

        var currentNode: Node = tree
        for(command in commands) {
            if (command.startsWith("$")) {
                // System command
                val parts = command.split(" ")
                val action = parts[1]
                if (action == "ls") {
                    // nothing to do
                } else if (action == "cd") {
                    val destination = parts[2]
                    if (destination == "/") {
                        continue
                    } else if (destination == "..") {
                        currentNode = currentNode.getParent()!!
                    } else {
                        currentNode = currentNode.getDir(destination)
                    }
                } else {
                    throw Exception("Unknown action")
                }
            } else {
                // File or dir
                if (command.startsWith("dir")) {
                    val parts = command.split(" ")
                    val name = parts[1]
                    val child = Node(name, Node.Type.DIR, currentNode)
                    currentNode.addChild(child)
                } else {
                    val parts = command.split(" ")
                    val size = parts[0].toInt()
                    val name = parts[1]
                    val child = Node(name, Node.Type.FILE, currentNode)
                    child.setSize(size)
                    currentNode.addChild(child)
                }

            }
        }
        computeSize(tree)
        return tree
    }

    fun part1(commands: List<String>): Int {
        val tree = getTree(commands)
        return computeDirSum(tree)
    }

    fun part2(commands: List<String>): Int {
        val tree = getTree(commands)
        val fileTotalSize = tree.getSize()
        val totalSpace = 70000000
        val freeSpace = totalSpace - fileTotalSize
        val minSpaceToFree = 30000000 - freeSpace

        return findDirToDelete(tree, minSpaceToFree, tree.getSize())
    }

    val rawInput = "\$ cd /,\$ ls,dir bcfwbq,14779 cmss,dir ctctt,101350 gpbswq.njr,270744 mglrchsr,260405 qtvftbl,dir rbsrpg,dir rzgnbgv,dir svsgnbs,dir wqctlzz,71582 wrqbm,\$ cd bcfwbq,\$ ls,dir bsbpc,dir gpbswq,172204 lpn.qjd,269121 lts.zjd,dir pfps,dir phvgmv,dir pjcrwh,dir pvf,dir rthpbmhr,dir sjnvdz,\$ cd bsbpc,\$ ls,191305 hlqptq.nrj,15627 lts.zjd,\$ cd ..,\$ cd gpbswq,\$ ls,dir ctctt,dir jcw,dir jnh,53143 lts.zjd,dir qrrjgdbd,dir tnsjg,\$ cd ctctt,\$ ls,dir hhmm,\$ cd hhmm,\$ ls,89761 brfjczv.lmr,226384 gwqfwwp.ctl,174778 pgsdmfj,\$ cd ..,\$ cd ..,\$ cd jcw,\$ ls,149585 gpbswq.lbv,\$ cd ..,\$ cd jnh,\$ ls,10840 ctctt,dir fzplg,dir jvpc,dir lpn,dir mcz,48063 nczc,8024 rthpbmhr.qwq,65222 vqgbgm,\$ cd fzplg,\$ ls,34828 lpn.vcl,dir svsgnbs,\$ cd svsgnbs,\$ ls,216427 bvtl,242012 gpbswq.qlg,dir gsmltmw,11388 lpn.trp,dir lrr,dir vwqlvj,\$ cd gsmltmw,\$ ls,66467 pldhhjch,\$ cd ..,\$ cd lrr,\$ ls,dir ctctt,dir lpn,16831 lts.zjd,dir svsgnbs,dir tdpmdfgd,177469 wct.njp,\$ cd ctctt,\$ ls,145394 phd.tvj,\$ cd ..,\$ cd lpn,\$ ls,dir svsgnbs,\$ cd svsgnbs,\$ ls,148504 ctctt.vjd,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,245750 ggbhsgz.snc,\$ cd ..,\$ cd tdpmdfgd,\$ ls,dir cghfclv,dir mcfzvlvw,dir mdgvcgbc,\$ cd cghfclv,\$ ls,49162 shwslwsf.lww,\$ cd ..,\$ cd mcfzvlvw,\$ ls,dir bsbswh,\$ cd bsbswh,\$ ls,dir hqsdsp,\$ cd hqsdsp,\$ ls,70065 pldhhjch,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd mdgvcgbc,\$ ls,235514 dhfms.nwl,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd vwqlvj,\$ ls,269473 jwv.dqh,90324 mglrchsr,194977 rwgsvszh.jbf,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd jvpc,\$ ls,dir rdgqr,dir sspn,\$ cd rdgqr,\$ ls,dir qcjccsth,\$ cd qcjccsth,\$ ls,dir rqwvslc,\$ cd rqwvslc,\$ ls,275985 pgqph.lcn,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd sspn,\$ ls,200316 gpbswq,162820 pldhhjch,\$ cd ..,\$ cd ..,\$ cd lpn,\$ ls,277995 hlqptq.nrj,\$ cd ..,\$ cd mcz,\$ ls,dir fjtj,157693 gqfgrfqw.wtc,dir jqbpcd,206235 lpn,54229 mglrchsr,238506 rthpbmhr,dir snr,dir ztlrtgjl,\$ cd fjtj,\$ ls,240610 fbwzn,207688 hlqptq.nrj,150032 lts.zjd,48060 mcrgn,265551 zqrnt.srf,\$ cd ..,\$ cd jqbpcd,\$ ls,256141 ctctt.nbp,dir gpbswq,78480 hmddcjdd.bmc,31403 lpn,120619 mvdfjzdr,dir nqgvl,\$ cd gpbswq,\$ ls,125791 ctctt,\$ cd ..,\$ cd nqgvl,\$ ls,174465 jrbfcvf.rqr,144210 lts.zjd,258976 rthpbmhr,\$ cd ..,\$ cd ..,\$ cd snr,\$ ls,185943 rthpbmhr.jhb,\$ cd ..,\$ cd ztlrtgjl,\$ ls,232309 ntlzfsz.vjd,254942 zhrds.nbp,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd qrrjgdbd,\$ ls,dir gpbswq,\$ cd gpbswq,\$ ls,170768 rthpbmhr.qwf,\$ cd ..,\$ cd ..,\$ cd tnsjg,\$ ls,242206 bjmgvmp.hht,245356 frtdp,dir jrflhz,128115 lpn,120081 rfhs,dir sfplvt,dir tts,114165 zfl.ccr,\$ cd jrflhz,\$ ls,dir gpbswq,dir nnlzjwts,dir sctf,\$ cd gpbswq,\$ ls,121401 mglrchsr,\$ cd ..,\$ cd nnlzjwts,\$ ls,dir gljnss,165011 lts.zjd,69364 svsgnbs.bqm,\$ cd gljnss,\$ ls,181850 cfjbd.fmj,\$ cd ..,\$ cd ..,\$ cd sctf,\$ ls,109435 gqfgrfqw.wtc,146343 lpn.mbs,255948 svsgnbs.hbf,231472 vdrfwqwv.pzf,263352 zgzj,\$ cd ..,\$ cd ..,\$ cd sfplvt,\$ ls,51580 hlqptq.nrj,dir mldph,\$ cd mldph,\$ ls,163815 hsnw,\$ cd ..,\$ cd ..,\$ cd tts,\$ ls,dir ctctt,211239 rpm,dir rthpbmhr,dir wpnnrzb,\$ cd ctctt,\$ ls,dir ctctt,137333 hshpfwl,183146 srd,\$ cd ctctt,\$ ls,89470 hlqptq.nrj,\$ cd ..,\$ cd ..,\$ cd rthpbmhr,\$ ls,139569 fhjlbrmp.phd,223589 jvrs.bpj,198566 rthpbmhr.qdr,\$ cd ..,\$ cd wpnnrzb,\$ ls,dir ctctt,158058 fjtcc,dir jqqhgjv,dir qvbvvb,16429 wds.hpj,\$ cd ctctt,\$ ls,166551 gcjt.wld,233189 gpbswq.mls,193694 rthpbmhr.rvz,dir svsgnbs,\$ cd svsgnbs,\$ ls,248185 fpssfvd.zft,215781 rwtg.gch,\$ cd ..,\$ cd ..,\$ cd jqqhgjv,\$ ls,dir gpbswq,14842 lts.zjd,dir mqp,258342 pldhhjch,103492 sddj.sbq,248024 svsgnbs,\$ cd gpbswq,\$ ls,dir sqchbqc,176209 vdq.jbz,\$ cd sqchbqc,\$ ls,dir cphf,\$ cd cphf,\$ ls,253613 snzbgfs.rjf,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd mqp,\$ ls,10090 mfw,\$ cd ..,\$ cd ..,\$ cd qvbvvb,\$ ls,dir mzw,dir svsgnbs,\$ cd mzw,\$ ls,98994 mmv.hcl,\$ cd ..,\$ cd svsgnbs,\$ ls,108748 lts.zjd,10351 mglrchsr,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd pfps,\$ ls,dir cpp,110535 mglrchsr,120669 qvh.fbm,\$ cd cpp,\$ ls,dir htnmrjpq,\$ cd htnmrjpq,\$ ls,120225 bdjmsbg.wfz,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd phvgmv,\$ ls,113550 pldhhjch,31171 zcfm,\$ cd ..,\$ cd pjcrwh,\$ ls,265625 snbjdmg.jtn,\$ cd ..,\$ cd pvf,\$ ls,91010 ctctt,dir hdz,dir qtwfpmvz,\$ cd hdz,\$ ls,103787 rlnrs,\$ cd ..,\$ cd qtwfpmvz,\$ ls,244905 lts.zjd,\$ cd ..,\$ cd ..,\$ cd rthpbmhr,\$ ls,dir phq,dir svsgnbs,dir wzwfz,dir zpwfj,\$ cd phq,\$ ls,91709 bzfnqh,dir ccwqrjn,dir gpbswq,dir svsgnbs,\$ cd ccwqrjn,\$ ls,8953 fffqzmqp,dir ftnb,dir svsgnbs,\$ cd ftnb,\$ ls,226615 rthpbmhr,\$ cd ..,\$ cd svsgnbs,\$ ls,dir bhnnm,dir tjrqtmd,\$ cd bhnnm,\$ ls,dir prfqw,\$ cd prfqw,\$ ls,dir hzsjlq,\$ cd hzsjlq,\$ ls,99285 cfpwbvp,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd tjrqtmd,\$ ls,237461 cqr.wfj,149955 zchnb,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd gpbswq,\$ ls,dir bqqtnfb,dir ctctt,261108 gpbswq,135193 hnrflng,264503 jrp.bls,224864 mghhgrj.tgp,dir pljbtbn,dir rthpbmhr,244222 svsgnbs.rzp,\$ cd bqqtnfb,\$ ls,dir jnzfr,\$ cd jnzfr,\$ ls,dir bdrqmr,168907 pldhhjch,\$ cd bdrqmr,\$ ls,151767 vfw.jjc,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ctctt,\$ ls,dir zdsshmr,\$ cd zdsshmr,\$ ls,77208 hlqptq.nrj,\$ cd ..,\$ cd ..,\$ cd pljbtbn,\$ ls,63719 hlqptq.nrj,103719 jjctg.dhw,547 tljz.wnv,\$ cd ..,\$ cd rthpbmhr,\$ ls,dir sjbfhcpc,\$ cd sjbfhcpc,\$ ls,184946 sgpgszw,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,dir ctctt,dir flzsvb,dir pbw,23408 qprlnvwv.jmz,dir wjhplc,\$ cd ctctt,\$ ls,11507 cnf,dir gpbswq,87778 rthpbmhr.wzv,dir slmbb,dir sqc,75556 wsbzwn.mpf,\$ cd gpbswq,\$ ls,173498 dsg,202811 msvs.szd,208419 pldhhjch,\$ cd ..,\$ cd slmbb,\$ ls,dir jcth,dir njldhbln,\$ cd jcth,\$ ls,6106 hlqptq.nrj,\$ cd ..,\$ cd njldhbln,\$ ls,241153 mvnvzqfc.rtn,\$ cd ..,\$ cd ..,\$ cd sqc,\$ ls,dir zhrc,\$ cd zhrc,\$ ls,dir qswqqzb,\$ cd qswqqzb,\$ ls,264937 btqmqn.hqv,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd flzsvb,\$ ls,58735 hlqptq.nrj,\$ cd ..,\$ cd pbw,\$ ls,80787 bgfmdg,234807 gqfgrfqw.wtc,44816 pldhhjch,dir qjjpmq,dir rthpbmhr,153500 ssmdz,\$ cd qjjpmq,\$ ls,155209 ctghhsdh,182544 fprdp.ffs,\$ cd ..,\$ cd rthpbmhr,\$ ls,136673 lts.zjd,\$ cd ..,\$ cd ..,\$ cd wjhplc,\$ ls,246593 hhcgnfjb.nbl,29266 hlqptq.nrj,246096 lts.zjd,40242 rrfgvvhg,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,215743 fwm,236816 gqfgrfqw.wtc,235185 sjdlr.rzj,dir ztsgb,\$ cd ztsgb,\$ ls,265998 rthpbmhr.pdp,275979 zqfcprz.wtd,\$ cd ..,\$ cd ..,\$ cd wzwfz,\$ ls,dir bsqwtf,dir ctctt,dir lpng,dir svsgnbs,\$ cd bsqwtf,\$ ls,dir rhjb,dir sgzvb,\$ cd rhjb,\$ ls,166599 rthpbmhr.msg,\$ cd ..,\$ cd sgzvb,\$ ls,185594 zmnb.bcq,\$ cd ..,\$ cd ..,\$ cd ctctt,\$ ls,130367 svsgnbs,17459 tdsztr.fsn,242273 wfs,\$ cd ..,\$ cd lpng,\$ ls,145778 snmcwfg.hjz,\$ cd ..,\$ cd svsgnbs,\$ ls,dir ctctt,dir nqrlzg,dir qczmdfm,54814 wtmjh.jdv,\$ cd ctctt,\$ ls,244171 pldhhjch,\$ cd ..,\$ cd nqrlzg,\$ ls,dir qjhlj,\$ cd qjhlj,\$ ls,dir gncct,\$ cd gncct,\$ ls,141943 wsdgmdd.ctz,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd qczmdfm,\$ ls,4482 lpn.fmp,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd zpwfj,\$ ls,226995 lts.zjd,dir sflcgdm,\$ cd sflcgdm,\$ ls,199168 bjrjrrm.bfw,dir fpcq,24906 gdzfmhz.jhp,7267 hdpzvh.ngg,dir jjsgqb,137796 psws.hvp,\$ cd fpcq,\$ ls,195792 nghcc.wps,\$ cd ..,\$ cd jjsgqb,\$ ls,18774 ctctt,106399 jvbgfhs,208035 rthpbmhr,dir zptz,\$ cd zptz,\$ ls,278792 gqfgrfqw.wtc,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd sjnvdz,\$ ls,dir fchgggp,dir gldg,40164 gnh.gmv,dir lpn,dir njtgjt,81415 qqfm.grb,dir vvcbjct,\$ cd fchgggp,\$ ls,dir fjcclj,dir lpn,145291 lts.zjd,7288 mglrchsr,dir pmhdzvfn,dir qtpdfwh,dir vjwtvb,\$ cd fjcclj,\$ ls,28333 gpbswq.vtg,258676 lts.zjd,\$ cd ..,\$ cd lpn,\$ ls,197797 pldhhjch,\$ cd ..,\$ cd pmhdzvfn,\$ ls,21538 gpbswq.pwq,5451 hqjg,dir llhp,220717 lzqmh.stl,123800 pldhhjch,dir pmv,dir rzs,dir tztv,160018 zfvgjtzr.qth,\$ cd llhp,\$ ls,dir lsft,dir pfjmphs,\$ cd lsft,\$ ls,78424 gpbswq.ddb,101497 gqfgrfqw.wtc,137686 hlqptq.nrj,122325 mglrchsr,\$ cd ..,\$ cd pfjmphs,\$ ls,185141 mbw.gnd,\$ cd ..,\$ cd ..,\$ cd pmv,\$ ls,139255 gqfgrfqw.wtc,272882 hlqptq.nrj,\$ cd ..,\$ cd rzs,\$ ls,dir gpbswq,89153 gpbswq.vcv,81882 gqfgrfqw.wtc,39252 hlqptq.nrj,dir tmcm,\$ cd gpbswq,\$ ls,205674 ctctt.gqd,\$ cd ..,\$ cd tmcm,\$ ls,156591 gmjvzj.wzl,199254 lts.zjd,dir vzhbsdd,dir zfs,\$ cd vzhbsdd,\$ ls,70059 gsgzqgn.fhf,43456 hrttvrqc,\$ cd ..,\$ cd zfs,\$ ls,223726 hlqptq.nrj,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd tztv,\$ ls,200126 lpn.bns,dir wfjwmbj,\$ cd wfjwmbj,\$ ls,120344 gdqgml.gdn,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd qtpdfwh,\$ ls,dir qszjt,\$ cd qszjt,\$ ls,7207 rthpbmhr.rpv,20452 ztdnfmgp.dsb,\$ cd ..,\$ cd ..,\$ cd vjwtvb,\$ ls,dir scswlmn,\$ cd scswlmn,\$ ls,207195 svsgnbs.jqq,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd gldg,\$ ls,119560 ctctt.wbc,203041 gqfgrfqw.wtc,dir hrp,274270 lts.zjd,25081 mhsfdhjr.ndw,dir svsgnbs,\$ cd hrp,\$ ls,dir lpn,\$ cd lpn,\$ ls,dir gpbswq,dir wvrzhdb,\$ cd gpbswq,\$ ls,dir vtgc,\$ cd vtgc,\$ ls,231107 hlqptq.nrj,\$ cd ..,\$ cd ..,\$ cd wvrzhdb,\$ ls,83303 lts.zjd,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,dir fhfqlv,13446 frn.hzg,126475 wmjjjl.cjr,\$ cd fhfqlv,\$ ls,243574 hjn.jzb,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd lpn,\$ ls,dir mqglznd,\$ cd mqglznd,\$ ls,dir gpbswq,177654 gpbswq.zhv,128217 gqfgrfqw.wtc,66750 hlqptq.nrj,136018 hvphz,dir pswvwtf,113363 rthpbmhr.gwz,dir twddrn,\$ cd gpbswq,\$ ls,244278 lts.zjd,dir pfrjwbvl,dir qlrfw,222491 rthpbmhr,\$ cd pfrjwbvl,\$ ls,46802 cfl.ljt,dir ctctt,dir dfqzmd,110525 gshdhsfm,dir jcbw,dir lpn,237385 pldhhjch,15812 prcwhhq.jjh,dir rthpbmhr,260693 zmgq,\$ cd ctctt,\$ ls,6529 hctcg.dpw,188655 lpn.qjf,202221 wjnb,\$ cd ..,\$ cd dfqzmd,\$ ls,197980 ctctt,\$ cd ..,\$ cd jcbw,\$ ls,1281 gpbswq,15778 jfgjlcd.mqh,38803 mdtcrb.dbj,dir qtjbpbs,\$ cd qtjbpbs,\$ ls,59348 mglrchsr,\$ cd ..,\$ cd ..,\$ cd lpn,\$ ls,dir ctctt,dir hsjjp,260465 mglrchsr,\$ cd ctctt,\$ ls,dir wvbrsb,\$ cd wvbrsb,\$ ls,135584 lts.zjd,\$ cd ..,\$ cd ..,\$ cd hsjjp,\$ ls,249448 ddfqnwgf,164051 dsnhsbp.wvv,dir fmzgm,dir gpbswq,113907 gqfgrfqw.wtc,\$ cd fmzgm,\$ ls,150025 ngnqjcj.tbf,\$ cd ..,\$ cd gpbswq,\$ ls,33139 dmgqhf.nzd,dir gpbswq,dir rwd,\$ cd gpbswq,\$ ls,148820 lnqqds.rpg,\$ cd ..,\$ cd rwd,\$ ls,133433 pldhhjch,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd rthpbmhr,\$ ls,262342 fdnr.svq,dir nbpsdm,161791 pldhhjch,6835 qvclr,228110 whf,\$ cd nbpsdm,\$ ls,dir rthpbmhr,dir svsgnbs,\$ cd rthpbmhr,\$ ls,267109 chb,\$ cd ..,\$ cd svsgnbs,\$ ls,150446 rlv.vcc,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd qlrfw,\$ ls,dir sgcpwst,\$ cd sgcpwst,\$ ls,dir fss,\$ cd fss,\$ ls,244165 gpbswq.qtz,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd pswvwtf,\$ ls,162099 jhdrnv.zrd,54856 mglrchsr,dir psdz,169053 qhq,\$ cd psdz,\$ ls,dir lbcf,\$ cd lbcf,\$ ls,218770 ctctt.chv,95266 pldhhjch,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd twddrn,\$ ls,120791 hlqptq.nrj,212213 vffj,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd njtgjt,\$ ls,dir mzwdb,\$ cd mzwdb,\$ ls,108520 lts.zjd,\$ cd ..,\$ cd ..,\$ cd vvcbjct,\$ ls,155890 ctctt.fbw,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ctctt,\$ ls,5656 mpftwp.nds,8998 pldhhjch,185601 snrng.qsv,\$ cd ..,\$ cd rbsrpg,\$ ls,113129 cpwmjw.rbj,dir jdhmlzr,114254 sqj.fzp,120708 svsgnbs.hpn,\$ cd jdhmlzr,\$ ls,dir cdnmflmm,248055 hlqptq.nrj,247942 pldhhjch,dir qrwsnzdv,80053 svsgnbs,219309 zhqgvd.bhw,\$ cd cdnmflmm,\$ ls,83138 lpn.wtg,\$ cd ..,\$ cd qrwsnzdv,\$ ls,197145 zspfb.sbd,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd rzgnbgv,\$ ls,208692 clz,dir tmcqcpfc,dir twlnjr,\$ cd tmcqcpfc,\$ ls,dir jtnf,\$ cd jtnf,\$ ls,242978 fhvtvdff.swr,21748 lwcplzmw,\$ cd ..,\$ cd ..,\$ cd twlnjr,\$ ls,dir ctctt,dir gpbswq,98435 rthpbmhr.pcr,dir snpm,dir svsgnbs,104969 zzd,\$ cd ctctt,\$ ls,200382 pqswsnhp,\$ cd ..,\$ cd gpbswq,\$ ls,90380 qqrfbwn,\$ cd ..,\$ cd snpm,\$ ls,57996 swfjlfh.qft,\$ cd ..,\$ cd svsgnbs,\$ ls,86028 clcfrnr.jwl,199666 ctctt.ftr,200949 ctctt.mrh,23594 dhlmbh.gjt,278047 mbchg,dir pgfhp,\$ cd pgfhp,\$ ls,21555 rlblnvsd,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd ..,\$ cd svsgnbs,\$ ls,155183 jgjj.sgs,28150 pldhhjch,\$ cd ..,\$ cd wqctlzz,\$ ls,23662 mglrchsr,60923 pldhhjch"
    val input = rawInput.split(",")
    println(part1(input))
    println(part2(input))
}