dirstack = [] # Stack of directories we are currently at directories = {} # Maps paths to total filesums def addsize(size): for (i, dir) in enumerate(dirstack): path = "/".join(dirstack[:i+1]) if not path in directories: directories[path] = 0 directories[path] += size with open("input.txt", "r") as f: for line in f.readlines(): line = line.strip() if line[0] == '$' and line[2] == 'c': folder = line.split("$ cd ")[1] if folder == '..': dirstack.pop() else: dirstack.append(folder) else: indicator = line.split(" ")[0] try: size = int(indicator) addsize(size) except: pass sum = 0 [sum := sum + directories[x] for x in directories if directories[x] <= 100000] print(sum)