with import ../../util.nix; let # read input input = stringToCharacters (readFile ./input); marker = markerLength: data: let isMarker = l: length (unique l) == markerLength; search = start: l: if isMarker (sublist (start - markerLength + 1) markerLength l) then start +1 else search (start +1) l; in search (markerLength -1) input; in rec { part1 = marker 4 input; part2 = marker 14 (drop part1 input); }