DZYRATYJCDZ37DANB6FDHK7KBOAPJ7QW2TZ6AAQTWIEEICOQ7VDQC
(ns edition2022.day7
(:require [clojure.string :as str]))
(def example "$ cd /\n$ ls\ndir a\n14848514 b.txt\n8504156 c.dat\ndir d\n$ cd a\n$ ls\ndir e\n29116 f\n2557 g\n62596 h.lst\n$ cd e\n$ ls\n584 i\n$ cd ..\n$ cd ..\n$ cd d\n$ ls\n4060174 j\n8033020 d.log\n5626152 d.ext\n7214296 k")
(def example-lines (str/split-lines example))
(defn add-file [tree command]
;(println command)
(assoc tree (second command) (bigint (Integer/parseInt (first command)))))
(defn create-dir-tree [lines tree]
(if (or (empty? lines) (= "$ cd .." (first lines)))
[(rest lines) tree]
(let [current-line (first lines)
other-lines (rest lines)
command (str/split current-line #" ")
new-args (cond
(= "$ cd /" current-line) [other-lines tree]
(= "ls" (second command)) [other-lines tree]
(= "dir" (first command)) [other-lines tree]
(= "cd" (second command)) (let [other-exec (create-dir-tree other-lines {})]
[(first other-exec)
(assoc tree (nth command 2) (second other-exec))])
:else [other-lines (add-file tree command)])]
(recur (first new-args) (second new-args)))))
(defn dir-structure [lines]
(second (create-dir-tree lines {})))
(defn dir-name [parent child]
(str parent \. child))
(defn compute-sizes [parent tree]
(let [files-size (->> (vals tree)
(filter #(not (map? %)))
(reduce + 0N))
dirs (->> (seq tree)
(filter #(map? (second %))))
sizes (->> dirs
(map #(compute-sizes (dir-name parent (first %)) (second %)))
(reduce conj {})
)
parent-size (->> (map first dirs)
(map #(dir-name parent %))
(select-keys sizes)
(vals)
(reduce + files-size))]
(assoc sizes parent parent-size)))
(defn sum-with-cap [lines]
(->> lines
(dir-structure)
(compute-sizes "/")
(vals)
(filter #(<= % 100000N))
(reduce + 0N)
))
(defn input-lines []
(->> (slurp "resources/day7.in")
(str/split-lines)))
(defn solution-part1 []
(->> (input-lines)
(sum-with-cap)))
(defn solution-part2 []
(let [sizes (->> (input-lines)
(dir-structure)
(compute-sizes "/"))
used-space (sizes "/")
free-space (- 70000000N used-space)]
(->> sizes
(vals)
(sort)
(drop-while #(< (+ % free-space) 30000000N))
(first))))
(comment
example-lines
(create-dir-tree ["14848514 b.txt" "8504156 c.dat"] {})
(create-dir-tree ["$ ls" "14848514 b.txt" "8504156 c.dat"] {})
(create-dir-tree ["$ ls" "14848514 b.txt" "8504156 c.dat" "dir aaaa"] {})
(create-dir-tree ["$ cd /" "$ ls" "14848514 b.txt" "8504156 c.dat" "dir aa"] {})
(create-dir-tree ["$ cd /" "$ ls" "14848514 b.txt" "8504156 c.dat" "dir a" "$ cd a" "$ ls" "29116 f"] {})
(dir-structure example-lines)
(compute-sizes "/" {"a" 10, "b" 20, "c" {"d" 40}})
(compute-sizes "/" (dir-structure example-lines))
(sum-with-cap example-lines)
(solution-part1)
(dir-structure (input-lines))
(compute-sizes "/" (dir-structure (input-lines)))
all-dirs-from-file
(count all-dirs-from-file)
(count (set all-dirs-from-file))
(count (filter #(str/includes? in %) all-dirs-from-file))
(count (compute-sizes "/" (dir-structure (input-lines))))
(solution-part2)
)
(ns edition2022.day6)
(defn read-in []
(seq (slurp "resources/day6.in")))
(defn unique? [marker]
(let [expected-size (count marker)
s (set marker)]
(= expected-size (count s))))
(defn find-idx-after-marker [marker-size datastream]
(->> (partition marker-size 1 datastream)
(take-while #(not (unique? %)))
(count)
(+ marker-size)))
(comment
(find-idx-after-marker 4 [\a \b \c \d \e])
(find-idx-after-marker 4 (seq "bvwbjplbgvbhsrlpgdmjqwftvncz"))
(find-idx-after-marker 4 (seq "nppdvjthqldpwncqszvftbrmjlhg"))
(unique? [\a \b \c \d])
(find-idx-after-marker 4 (read-in))
(find-idx-after-marker 14 (read-in))
(find-idx-after-marker 14 (seq "mjqjpqmgbljsphdztnvjfqwrcgsmlb"))
)
$ cd /
$ ls
150961 cmnwnpwb
28669 hhcp.jzd
dir jssbn
dir lfrctthp
133395 lfrctthp.tlv
dir ltwmz
dir nmzntmcf
dir vhj
256180 wbs.vmh
257693 zsntdzf
$ cd jssbn
$ ls
89372 dvlb
dir lfrctthp
dir pjzpjjq
dir rbtbtt
203148 sppmmj
130200 sppmmj.bmm
dir tlhttrgs
248929 vsbvlr
$ cd lfrctthp
$ ls
dir lfrctthp
dir srf
165285 vlfc
202701 wbs.vmh
$ cd lfrctthp
$ ls
25083 gsb.flc
$ cd ..
$ cd srf
$ ls
20386 hcnjd.nsq
143480 jjlz.mtq
dir rwvdvvsf
88782 sbmhf
143464 wbs.vmh
dir wvhhr
$ cd rwvdvvsf
$ ls
20009 bqz
133188 czdm
$ cd ..
$ cd wvhhr
$ ls
10445 vrwdvnh.jhf
$ cd ..
$ cd ..
$ cd ..
$ cd pjzpjjq
$ ls
14329 chgbd.zjf
dir dvlb
212284 pjc
dir qlrn
225566 rhzgmnb.nhd
145766 sppmmj.dzz
dir vpltwcs
125853 wbs.vmh
$ cd dvlb
$ ls
dir bjfqsb
dir fnwsmj
154127 gplzm
264923 qcp.qvc
dir wlhfvwl
dir wrgqqts
dir zhj
$ cd bjfqsb
$ ls
dir jgltcw
$ cd jgltcw
$ ls
264579 shmqqjf.fwd
$ cd ..
$ cd ..
$ cd fnwsmj
$ ls
dir lfrctthp
dir rddpmj
$ cd lfrctthp
$ ls
dir qdgqdtn
198919 qhjbh.fbc
dir sgddcfdn
$ cd qdgqdtn
$ ls
230357 lbcgfp.vzq
$ cd ..
$ cd sgddcfdn
$ ls
110212 cwjbzd.npb
dir lnjln
207550 wlvdsjj
$ cd lnjln
$ ls
28970 tdw
$ cd ..
$ cd ..
$ cd ..
$ cd rddpmj
$ ls
dir fhlnmw
$ cd fhlnmw
$ ls
228871 mcgdrzg
$ cd ..
$ cd ..
$ cd ..
$ cd wlhfvwl
$ ls
dir rbwq
$ cd rbwq
$ ls
139444 jdczdlwb
66039 mnbq.sdq
$ cd ..
$ cd ..
$ cd wrgqqts
$ ls
124869 dvlb.cfl
$ cd ..
$ cd zhj
$ ls
dir hww
192363 lqn
dir nqv
$ cd hww
$ ls
14681 czhd.bdn
232222 fgcfbrs.wqt
dir pnsbrd
155416 vsw.npv
199792 wbs.vmh
44877 znpdrr.rmd
$ cd pnsbrd
$ ls
179442 vsbvlr
55431 zbhj.wnh
$ cd ..
$ cd ..
$ cd nqv
$ ls
262693 hnz.czd
259429 lptljbz
dir rjgbm
dir tlhttrgs
76496 tlhttrgs.jlv
260003 vsbvlr
$ cd rjgbm
$ ls
45885 fgfh.tch
42899 lfrctthp.fbc
159401 nnmg.tvz
144595 trzgtn.scg
$ cd ..
$ cd tlhttrgs
$ ls
dir cqtnvzn
220458 wbs.vmh
$ cd cqtnvzn
$ ls
49609 czdm
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd qlrn
$ ls
150270 bflnzt
203988 bgq
dir jwgd
256702 sppmmj
dir wbgvqpc
$ cd jwgd
$ ls
57414 lmlbtpg.wdp
$ cd ..
$ cd wbgvqpc
$ ls
dir dvlb
dir qfhvjtv
dir tpcwhmv
$ cd dvlb
$ ls
118388 hhcp.jzd
$ cd ..
$ cd qfhvjtv
$ ls
82966 lfrctthp
dir mhbbpdpj
139234 wbs.vmh
$ cd mhbbpdpj
$ ls
dir ghrbbh
$ cd ghrbbh
$ ls
24686 tlhttrgs
$ cd ..
$ cd ..
$ cd ..
$ cd tpcwhmv
$ ls
3666 hhcp.jzd
$ cd ..
$ cd ..
$ cd ..
$ cd vpltwcs
$ ls
dir tlhttrgs
146745 vsbvlr
$ cd tlhttrgs
$ ls
dir cchd
32682 cvbr.rmh
209102 mpdpnb
96179 wbs.vmh
$ cd cchd
$ ls
126044 wmrv
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd rbtbtt
$ ls
169793 hzgdsb.tbs
dir wqmvzg
$ cd wqmvzg
$ ls
dir lzbj
$ cd lzbj
$ ls
dir tnhdmqjh
$ cd tnhdmqjh
$ ls
5150 lfrctthp
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd tlhttrgs
$ ls
dir zjghthcb
dir zmlpwlm
$ cd zjghthcb
$ ls
dir dvlb
dir ghzsqrn
dir hvwjc
dir lfrctthp
$ cd dvlb
$ ls
167639 dvlb.fhs
70305 qnhgn.mgn
$ cd ..
$ cd ghzsqrn
$ ls
74556 dbrtz.lrn
dir fngzpjm
dir mdqbvhrr
220711 mrfjpgwj
dir sfhqmzhd
67424 tlhttrgs.thf
202325 vsngvn.ttq
$ cd fngzpjm
$ ls
dir dvlb
dir ghzwdw
$ cd dvlb
$ ls
59824 bmvzg
184952 lfrctthp
51434 qwcttnh.pbs
206348 wbs.vmh
$ cd ..
$ cd ghzwdw
$ ls
132594 lfrctthp
99032 tlhttrgs.cvp
$ cd ..
$ cd ..
$ cd mdqbvhrr
$ ls
32598 zsfv.qqv
$ cd ..
$ cd sfhqmzhd
$ ls
58893 wpmbm
$ cd ..
$ cd ..
$ cd hvwjc
$ ls
233454 ccpnsjm.cwc
72232 lfrctthp
dir nchvqtdq
248368 ptrlpt.gdf
222059 qgjv
69105 wbs.vmh
dir wnj
$ cd nchvqtdq
$ ls
49931 gjwjq.jrc
$ cd ..
$ cd wnj
$ ls
182139 ccpnsjm.cwc
dir dvlb
72806 hhcp.jzd
156378 sppmmj
$ cd dvlb
$ ls
dir cwjbzd
$ cd cwjbzd
$ ls
dir tlhttrgs
$ cd tlhttrgs
$ ls
240264 vdp.wzt
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd lfrctthp
$ ls
168164 ccpnsjm.cwc
68428 dcmfjn
133121 dvlb
146217 sppmmj.zjm
dir thgh
dir zzffz
$ cd thgh
$ ls
dir nrntbh
dir qlhbf
$ cd nrntbh
$ ls
139964 lfrctthp.brp
$ cd ..
$ cd qlhbf
$ ls
115891 vsbvlr
$ cd ..
$ cd ..
$ cd zzffz
$ ls
170513 tlhttrgs.hsw
$ cd ..
$ cd ..
$ cd ..
$ cd zmlpwlm
$ ls
232644 wvjrtvps.hrb
$ cd ..
$ cd ..
$ cd ..
$ cd lfrctthp
$ ls
dir cwjbzd
dir dvlb
65658 fclf
191985 hhcp.jzd
dir lwqdqm
dir mpb
dir ndn
dir rtpwjds
185299 smp
dir sqhvvsb
dir vzh
dir zzvnq
$ cd cwjbzd
$ ls
172122 ccpnsjm.cwc
dir dfqpqqw
dir lfrctthp
123102 lfrctthp.cms
73991 lqhjcbms
207693 mcnwp
dir sppmmj
114128 tzrrgl
$ cd dfqpqqw
$ ls
67239 dgssm.crl
dir rjm
$ cd rjm
$ ls
25830 nnwdzf
$ cd ..
$ cd ..
$ cd lfrctthp
$ ls
dir fqswn
241343 jllwj.wjc
$ cd fqswn
$ ls
76154 ccpnsjm.cwc
dir dhgghnm
dir vpbwj
$ cd dhgghnm
$ ls
36757 jbmlssv.ndp
dir sppmmj
$ cd sppmmj
$ ls
dir dsss
$ cd dsss
$ ls
201519 vsbvlr
$ cd ..
$ cd ..
$ cd ..
$ cd vpbwj
$ ls
154042 ccpnsjm.cwc
dir tlhttrgs
271666 vsbvlr
$ cd tlhttrgs
$ ls
125785 cwjbzd.lqr
19315 jdcm.mrz
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd sppmmj
$ ls
dir sppmmj
$ cd sppmmj
$ ls
161387 fwh.wtt
$ cd ..
$ cd ..
$ cd ..
$ cd dvlb
$ ls
dir dnqvhtr
dir jqpzj
dir jvvsgbl
dir tlhttrgs
$ cd dnqvhtr
$ ls
dir jzm
dir phcfgqfs
dir sppmmj
dir vhrst
$ cd jzm
$ ls
143413 sgsbj.qtr
dir smtpdcpf
$ cd smtpdcpf
$ ls
95947 lgzlj
$ cd ..
$ cd ..
$ cd phcfgqfs
$ ls
257801 hhcp.jzd
$ cd ..
$ cd sppmmj
$ ls
230280 ccpnsjm.cwc
261954 hhcp.jzd
dir hmcn
dir mrhsrrm
dir nlqmghj
dir rqbtcvfw
70788 vsbvlr
114344 wbs.vmh
225265 wjnf.wrv
$ cd hmcn
$ ls
206476 dvlb
214973 lfrctthp
$ cd ..
$ cd mrhsrrm
$ ls
126589 wbs.vmh
$ cd ..
$ cd nlqmghj
$ ls
113621 mdqvh.flp
$ cd ..
$ cd rqbtcvfw
$ ls
259673 wbs.vmh
$ cd ..
$ cd ..
$ cd vhrst
$ ls
102273 sppmmj
$ cd ..
$ cd ..
$ cd jqpzj
$ ls
7675 vwls.wjz
$ cd ..
$ cd jvvsgbl
$ ls
217539 bgjgtfbv.wcf
dir fbvls
dir gtwrhhd
dir tlhttrgs
59720 wbs.vmh
$ cd fbvls
$ ls
146823 ccpnsjm.cwc
$ cd ..
$ cd gtwrhhd
$ ls
59762 wbs.vmh
$ cd ..
$ cd tlhttrgs
$ ls
7093 ccpnsjm.cwc
dir dvlb
dir hjclnb
$ cd dvlb
$ ls
62683 trww
$ cd ..
$ cd hjclnb
$ ls
245444 bcnlmstj.bsj
167166 czdm
$ cd ..
$ cd ..
$ cd ..
$ cd tlhttrgs
$ ls
53060 czdm
217177 hzwn
$ cd ..
$ cd ..
$ cd lwqdqm
$ ls
dir bdgnmf
dir dvlb
89596 vsbvlr
$ cd bdgnmf
$ ls
146880 wbs.vmh
$ cd ..
$ cd dvlb
$ ls
184438 vsbvlr
$ cd ..
$ cd ..
$ cd mpb
$ ls
dir dvlb
$ cd dvlb
$ ls
dir prqfqf
$ cd prqfqf
$ ls
dir ltmjppj
$ cd ltmjppj
$ ls
241963 bjgzsq.srr
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd ndn
$ ls
184702 cnv.vtn
52486 dvlb
dir hfq
52100 hswnvlq.frd
$ cd hfq
$ ls
dir bsjgglbs
263904 cwjbzd.sht
265639 phpvlfw.jmm
178105 wbs.vmh
25124 wcq.qct
$ cd bsjgglbs
$ ls
121761 czdm
$ cd ..
$ cd ..
$ cd ..
$ cd rtpwjds
$ ls
117111 qjvrwsfl
132235 rwjf
dir sdssvrst
223399 wjfdgt.ldj
$ cd sdssvrst
$ ls
114380 ccpnsjm.cwc
$ cd ..
$ cd ..
$ cd sqhvvsb
$ ls
7812 gjhj
239114 hhcp.jzd
dir ldmwm
230777 vsbvlr
$ cd ldmwm
$ ls
67855 blcbqb.wpz
dir cwjbzd
250365 czdm
249613 dvlb.mfq
dir jdsbt
95934 tlhttrgs.wgw
$ cd cwjbzd
$ ls
147822 cwjbzd.lff
122632 hhcp.jzd
dir llcflrds
dir tlhttrgs
67326 tvptb.fzl
dir wtcttdzg
$ cd llcflrds
$ ls
dir cngdgq
$ cd cngdgq
$ ls
235724 lqqcfphg
$ cd ..
$ cd ..
$ cd tlhttrgs
$ ls
dir cgf
67714 csb.hcw
dir cwjbzd
dir jvs
119180 lfrctthp.qgm
dir ppsmqwn
dir qqmtj
dir qzmpwzvz
dir zmsbqrqf
$ cd cgf
$ ls
dir dvlb
$ cd dvlb
$ ls
77864 thff
$ cd ..
$ cd ..
$ cd cwjbzd
$ ls
208459 ccpnsjm.cwc
17127 dtqglmf.zgb
$ cd ..
$ cd jvs
$ ls
142337 cwjbzd
$ cd ..
$ cd ppsmqwn
$ ls
147277 rmwh
$ cd ..
$ cd qqmtj
$ ls
153442 vqld.lsd
$ cd ..
$ cd qzmpwzvz
$ ls
223666 cwjbzd.gjl
254370 gjc
$ cd ..
$ cd zmsbqrqf
$ ls
193665 tjwclf.nzs
$ cd ..
$ cd ..
$ cd wtcttdzg
$ ls
52882 hhcp.jzd
110104 hqwgl.mtb
$ cd ..
$ cd ..
$ cd jdsbt
$ ls
77115 ccpnsjm.cwc
242705 dvlb
12624 lfrctthp
145552 sppmmj
198997 vsbvlr
$ cd ..
$ cd ..
$ cd ..
$ cd vzh
$ ls
dir ccbjg
91733 czdm
89195 dvlb
212167 rvfpbl.rtq
224909 tlhttrgs.djt
72916 vpznzhs.dcd
$ cd ccbjg
$ ls
dir mcvsbd
dir sppmmj
$ cd mcvsbd
$ ls
dir cwjbzd
dir rbsv
$ cd cwjbzd
$ ls
224826 ccpnsjm.cwc
$ cd ..
$ cd rbsv
$ ls
164816 lfrctthp
$ cd ..
$ cd ..
$ cd sppmmj
$ ls
85264 ccpnsjm.cwc
104511 dvlb.qgj
183533 lfrctthp.zdn
98525 wbs.vmh
$ cd ..
$ cd ..
$ cd ..
$ cd zzvnq
$ ls
107390 lfrctthp
dir lznpqbrd
dir pddfg
143496 prnjh.sgb
dir pvdz
dir vnmhs
118674 zhnh.mpl
$ cd lznpqbrd
$ ls
157950 dpvcgj.wlw
dir dvlb
175412 dvlb.qvr
dir lfrctthp
84587 pmsjdj
$ cd dvlb
$ ls
41223 rwr.nbz
$ cd ..
$ cd lfrctthp
$ ls
26056 fqc.fnl
28191 lgjlw.vql
dir sppmmj
262066 wbs.vmh
$ cd sppmmj
$ ls
246742 ccpnsjm.cwc
$ cd ..
$ cd ..
$ cd ..
$ cd pddfg
$ ls
dir cwjbzd
dir jbw
147410 vsbvlr
$ cd cwjbzd
$ ls
197956 jpzb.dcw
$ cd ..
$ cd jbw
$ ls
247206 vsbvlr
$ cd ..
$ cd ..
$ cd pvdz
$ ls
dir jctpqbgw
153177 qwcgjttm.lzm
94686 vsbvlr
$ cd jctpqbgw
$ ls
190424 qvm
$ cd ..
$ cd ..
$ cd vnmhs
$ ls
16118 sdhmzhlg.blf
$ cd ..
$ cd ..
$ cd ..
$ cd ltwmz
$ ls
243152 bdmz
$ cd ..
$ cd nmzntmcf
$ ls
dir jqcms
dir lrtsts
dir lvchpdf
dir qpzqp
dir qrgh
dir scwnmrds
$ cd jqcms
$ ls
105562 ccpnsjm.cwc
257512 chpr.zvl
dir cwjbzd
dir jzqbnpn
dir ssr
117496 tlhttrgs.thg
72550 vsbvlr
$ cd cwjbzd
$ ls
dir mwvlhzdn
dir qrpllg
205638 sppmmj.gcz
$ cd mwvlhzdn
$ ls
272658 dvlb.bbw
$ cd ..
$ cd qrpllg
$ ls
215810 wbs.vmh
$ cd ..
$ cd ..
$ cd jzqbnpn
$ ls
112583 sppmmj
$ cd ..
$ cd ssr
$ ls
66781 hpfpw.pvn
138840 zhwplzd.wrq
$ cd ..
$ cd ..
$ cd lrtsts
$ ls
dir drtrdnsg
41195 dvlb.fgt
dir lfrctthp
$ cd drtrdnsg
$ ls
dir gnc
dir sppmmj
$ cd gnc
$ ls
127922 ccpnsjm.cwc
233097 lfrctthp
24075 qtglzq
$ cd ..
$ cd sppmmj
$ ls
128955 czdm
64809 jtjh.nzq
dir mdmh
dir nbzh
126095 wbs.vmh
dir wwhbgg
$ cd mdmh
$ ls
dir zvtjfz
$ cd zvtjfz
$ ls
142470 ptp.qbf
$ cd ..
$ cd ..
$ cd nbzh
$ ls
7112 ccpnsjm.cwc
215395 chrtbjf.fwr
145865 wld.pdl
$ cd ..
$ cd wwhbgg
$ ls
51752 hhcp.jzd
$ cd ..
$ cd ..
$ cd ..
$ cd lfrctthp
$ ls
198780 hhcp.jzd
$ cd ..
$ cd ..
$ cd lvchpdf
$ ls
108580 hhcp.jzd
105301 jpjjhshl
dir njfmmj
dir nsw
dir sppmmj
dir tlhttrgs
dir tvsvr
$ cd njfmmj
$ ls
dir bjsvdfrf
dir gjgftj
dir sppmmj
25879 twzprtcf.hgl
$ cd bjsvdfrf
$ ls
77668 vsbvlr
$ cd ..
$ cd gjgftj
$ ls
dir mjbw
56593 vsbvlr
$ cd mjbw
$ ls
243595 ccpnsjm.cwc
$ cd ..
$ cd ..
$ cd sppmmj
$ ls
dir qzvwhr
$ cd qzvwhr
$ ls
dir cwjbzd
$ cd cwjbzd
$ ls
262825 wbs.vmh
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd nsw
$ ls
210254 rgqpq
$ cd ..
$ cd sppmmj
$ ls
55463 cwjbzd.dtt
196779 dvlb
125377 hgb.qmj
dir rdd
dir tlhttrgs
222280 tspz
dir zbq
$ cd rdd
$ ls
20045 srmsmr
$ cd ..
$ cd tlhttrgs
$ ls
47256 wbs.vmh
$ cd ..
$ cd zbq
$ ls
223951 cwjbzd.vrm
$ cd ..
$ cd ..
$ cd tlhttrgs
$ ls
56808 jvndrcmd.ftl
dir mjcmhg
220385 prh.wtz
231575 pzbtlg.fzv
11100 sqfr.lzs
dir tlhttrgs
$ cd mjcmhg
$ ls
214188 llsfnv.dmc
$ cd ..
$ cd tlhttrgs
$ ls
dir qtws
dir sbhswjld
$ cd qtws
$ ls
102462 vjlwzbsg.whn
$ cd ..
$ cd sbhswjld
$ ls
159193 dvlb.bqj
17424 hhcp.jzd
28945 pdwrmgs.lzq
38201 rpbllgs.rzn
dir sppmmj
$ cd sppmmj
$ ls
88100 wbs.vmh
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd tvsvr
$ ls
237626 tlhttrgs.mhw
$ cd ..
$ cd ..
$ cd qpzqp
$ ls
dir ddclns
134373 lfrctthp
167788 lstwpqbq.wln
224743 qcplm
14385 vzjj.bzm
108204 wbs.vmh
$ cd ddclns
$ ls
dir vprlq
$ cd vprlq
$ ls
137784 ccpnsjm.cwc
$ cd ..
$ cd ..
$ cd ..
$ cd qrgh
$ ls
29875 ccpnsjm.cwc
225323 hhcp.jzd
135470 tlhttrgs
23724 vsbvlr
$ cd ..
$ cd scwnmrds
$ ls
dir sppmmj
$ cd sppmmj
$ ls
dir sppmmj
$ cd sppmmj
$ ls
73173 blznf.smd
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd vhj
$ ls
221377 cwjbzd.tvv
98748 czdm
108605 hhcp.jzd
dir jnm
dir lfrctthp
11518 lfrctthp.jfl
89038 psnfcwpq.zcd
dir tlhttrgs
$ cd jnm
$ ls
66785 bfwm
196636 dssh.rwn
dir sppmmj
140177 tlhttrgs.jlh
199730 vsbvlr
$ cd sppmmj
$ ls
101586 ccpnsjm.cwc
dir lfrctthp
127582 vsbvlr
71001 zvrzs
$ cd lfrctthp
$ ls
122902 lfrctthp
247157 svmpmrl.tcc
$ cd ..
$ cd ..
$ cd ..
$ cd lfrctthp
$ ls
104555 cwjbzd.hbf
56298 pldmc.hjd
27639 sppmmj.nmr
$ cd ..
$ cd tlhttrgs
$ ls
252680 zsjgqqb
mvwvrwvwbblffmvmhmllmzmqzzbhbnnvrnvnmvvqrqrccpsstvvshvvpvvpddzwwjddfzzgbbzcchrrtzzmfffzqqsjjbfbjfjwffhrhrgrfrsfrsffbwwphwhgwgmgnggzwzhwzzpggnccdbcbssgccqgcgcvgccwffrqfqtqmqppwphhlbblnnwhwfhwhmhzhmmzbmbbjjmcjcggwlgltldttpccjlccbjccvfcvvdbvdvndvvmbmcbmmhphpbhhgjgllmljlqlwlclzlccrvrdvdzvzzzbrbrnbblplrplpsstdtjddgjgjgwjwzwbzwwrhwwbzwbwpwssvgvnnwnvvjqqswwsccwctwtntdndffjzfzmfzmfzmfzzhjzhzssdsgsnggbbqdqlqbllmglgddqppjjtzttlflrrczcmzzsppvfpvffcfrccvvvhjvhvfhfbbwdwrwswqqftfbfcfdfnfpnfflbbcmcqqsqwqqccmwmvwvffvdvlvtvqttnllqslsnllzplldmmzczhzmzzhllpfpqpnnqwwwrzzdpzzhccfvcvclcnnrjrmjrjlrlflqqtpqqdgqghhwdwdttlztttwmmvfmftfptphhddswdsdpdvpvpcpjjnvjvqvhvqqqfgqqgwqgwghwwmmvmvfmvvnvsslcclzlslppztzfzbzllcgllcsllvgvqvtqtsstztwwgjgghnhnhdnnqgnntqqtccdmcmhmpphpmmmbpbptpnnnmnppwlpwwfpwfwmfwfssbspslsflljpppbsspwptpwttfbtfftltvlttdmttllmggfcgfccvwcvczvvgvsgswsrrwppgcpggpgnngfnndrrdjrdrfdfmmjmsmbmmwjjjfzfdfbdbbtgbbcsbccgbbrvvrqrwqwmmhrhhbcbdbvdvzdvdjvvnwntwwdfwwrhrmhhnghhncccfttmpmrrjhhqddrsrvvssmrrgvgdgmmfqqhttspswpwlplpjljcjmjmvmdvvhbvvtqvqccczwwtlllztlzzpnnqznzddqsqvsshrrmccnppgrrjcjpccrvcvnvcncllffvnnbsbhhrmhmzzzhrhchjccgjcjwwhddmfmhhmrrrbccqddmjdmjdjtdjjmttzstsctssvvgghgbbhmhzmmjqqqqjgjfjpffpmpzmzszfzgzcggpmpnnqjqffgpghhszzvlzzdgzggqmggqlllcwwtzwwcfwccpjpggtqgtttzffdpffjzfzddzppprnprpqqbppvjpjzppbzpbzppwzzcnndsdzszbssqwqggnhggnzggpcpnndssghsggmfmrffvddvwvssjmjrmrmnndwdwhdhwwfjfjwjmwwqssmdsmdmssqzzrgzzjttnqnfqfcccvvmsvsvffccdjdccgtgqqjwqqnbqqnhqhrqrmrgmrrzjzrznzllwrlrbbcppctptwtfttlntnltnlnzzhrzhrzrtzzvsvfvjffsbsnbbfpphtptjjmffqgqnggnqnsshffslflggtlggmpggnfgfbgbfbcbbtdbdjqwfggzsfmzflttgdfqchhtjfwlmdnsbvmqcrhsrtwtjlmnlwbvjvqdzswdthbjslqzgmtzfjfcrgbhrrjtzgljbqfrzzqszhddnmzpnbgnflghnflwdmjdhgpnvwvnltcngwggqdznrpdtwsrclwwlfzhnjtpqcgzjqjnhcwbhndwvgrczhzwfjrdvjztdbjshmhrrqctjwpcdnpnvrtggrmhzhdtlntjphcddplgfvvmjzcbbpjbqbjwmnwqgftbmchghwvrlptvnfbffvgtdbtnfzwdmdlgzjbrvffvbrfwgjzzpbpcdzhcjbhfwnmqqwvjvnpgdqdjsmwdmrgfqrwhhqqjpfmvlncfdjchrccwpbptccdchqwvbcqzlhbfgrdzgncbwrzqpfszrcwtmnvbztjlzjlrqqfrnplhnmdjljcpnqssthhmjqrrlwdvsjswdwtfstmbvwhbptjnphjmnllbwffppzmdpchbcwcmgqzfmdqvhcmrvtgtjwlzfpnjnjtfvdhtjlqsdjwrrnflnsqrtfsnbjfdllhqslltsjqzdfqthqjjgrtqjwmlqqlhvszqswmdcbnwqgshpvfjdtvsqjvcnrnvtpfsgqszhtmcdlsqjwmttcqsdlvssrgwhtmtqwmttptnmgzpwzzrbwtsrjhmjpblztgftppcwwrjppvwlvdhwwdlfcdvhwpvhqpwrqsczvlmtghrrvqbphljcmcrfmwltlmnzchzrlbgspdjwfbhrmnfhvjwlgtghcpbfgdvrmwbqbprfvwpzqzrgqbhjtztwhjcjtncmbgjphsgdfvjwjljlwzhsdldqtdvgtzpwtmrbnpvqrmfdwngzqtsdjjztslrwdnfwgbnsjblcjzvmgbqllmdvvvdcvplgbzmhcrpbbjbfzhjgfpmjtrpmgvshzvqhcbcjzfcsvqggjcllcnjlrwqfpzldswzjgzvqwvszhrntnvlcpdcfqhqrtmhbdjqpfblrsbrhdfdwfgbhsnnjpgjvfpssfmhdbdncfrqbzpbttrhfzqnrttltqbvmhglbdpwmdbmgwcdsdsflmcnphwvbbhgqpqmwbdsmqwhcdftdlcfnstlfnzzsjhqzlsdmhpvlcqvhhlpdtzlqzlvbbwhhdsqhntbtpjjvnjlrncfmvnqmzwpldgrbfcfgdtlmrfzcbqfhvhpmsrrlnqwfggwrjsmnpnqhvvcfsfspfrmhwmbpqfhprzsswrczttlczhcqvgqqsnbhhfszqbswgtcjgddhngtcvlwqqmqzntrcwgwjhmhlgclpgtmqnpgwwhnjfdvvjgmqjlzsmwztpsdzrjlshswzljlmdzfqmqbtgtzlsfwqvwrdchjvrdnwdbprfvdvczstvnzfzzfmzbwjhtflbmhlgmfzrdfrqwfbltwqlqrghlprppvlqwggvczdcnmrmblhcfmpzdmqppgwhbbrjlzsvmsfzlrdljftcrdfdgmvrccwszpjmvdnbmfdnsgmgzsdpbrlsqvsmcwwqlwtwbgfvwtsmpqlnhjchnzrpncgtcqgwqrmqmrwsbmdvqcpggpzcjgtrhvnbpprlwfnjlvrgrdjjvncjmmflrpczqnlbqczggssqfcjcrghqlsztpdjpbbfcdjzzdjbljlsczdmrgshdscvhnltrwchjcmjzmjbhldnqzwwpswsnsldcbdcdpdgpjgwrnfbcpjtvzlhvgggldcfqcwwppvltsvsmwzwdgmhnfggtgtwldmrglcvmstgmbgbjhwwhgdhfrbjlwfhjfppdmffblbbzrplhlhqlsrnsthvjtglqntzcncmvhqnlsvvrscrhlncgncjswfgcvgjlwsndzmsbhbdqsggdgrsfqtzwnjpsdlbsqjrrjwwlbptwqpfqwvpsrtrmstddzdbjjlwvfqcpfczpsnmcgbfpbwcpljdhrgsqftbnplccjphwsdbprqfqqfcvtcdznnhrbdqpccphvdgtspmzzdbnslnrvtfrtbhcfzfgmhrttmdpwftvccjbllhqgtmpgwvbdjgtvtfbfnnsfgzqjmrpbcmqhpfbstznbvgtbhnwbbnjfsthdgdrpfdtvrtmgbwzqqpnlltbshjvnhsmqhqwzgbsfqqccfznjtnnzdrgcvwnlffdgvvqzvwhwfswdmqlrsglntzsnwjzgrhhwzzshwsfmlmrbnmrqlptmjgmtqctrmddzghsgtrbbcsmhtcnrzwmvrjmrnmhbjmflrclvlbzwbgmtnmwqgfmbbnnrdvhqcflglvzbmjzjtvnmrbgghnccfrphjshsgtrhfmmghhpwgclfvzfbdccsfrlfwtsjjnhlndpwcjdtlllhcsvwrwsbppqwhfcvnsnrvthrsbgmgjhpmjdndmdqdgzfvbqfmgfjrnrjchstrjprfwfnjqblhjdgsstvtpcsvmpbhggnwzncpjdhrcllcghhprhwhfgsqpfzphrdlcbrccglsb