-module(day6). -export([solve/1]). solve(InputData) -> {solve2(InputData, 4), solve2(InputData, 14)}. solve2(Symbols, Target) -> solve2(Symbols, #{}, 0, 0, Target). solve2(_Symbols, _State, Target, N, Target) -> N; solve2(<>, LastSeen, ChainLength, N, Target) -> Last = maps:get(Symbol, LastSeen, 0), solve2(Symbols, LastSeen#{Symbol => N}, min(N-Last, ChainLength+1), N+1, Target).