#!/usr/bin/env python from common import Folder, parse def folders_big_enough(folder: Folder, threshold: int) -> list[Folder]: if folder.size < threshold: return [] else: folder_list = [folder] for child in filter(lambda x: type(x) is Folder, folder.children): folder_list += folders_big_enough(child, threshold) return folder_list def solve(folder: Folder) -> int: threshold = 30000000 - (70000000 - folder.size) return min(sorted(folders_big_enough(folder, threshold))).size def main(): print(solve(parse("input"))) if __name__ == "__main__": main()