Onderweg naar de planeet van de Kerstman, begeeft de slee van de elf-generaal het. Om de motor te herstellen, moet je twee draden uit de motor zien te ontwarren. Deze draden starten beide in een centraal punt O met coördinaten (0, 0). Daarna wordt het pad van elke draad gegeven door een sequentie van instructies, elk van de vorm R[X], U[X], L[X] en D[X], die respectievelijk een beweging naar rechts, omhoog, naar links en omlaag voorstellen. Bij de sequentie "R8,U5,L5,D3" hoort dan volgende schets:
........... ........... ........... ....+----+. ....|....|. ....|....|. ....|....|. .........|. .o-------+. ...........
Wanneer het tweede pad gedefinieerd wordt door de sequentie "U7,R6,D4,L4", verkrijgen we volgende toestand:
........... .+-----+... .|.....|... .|..+--Y-+. .|..|..|.|. .|.-X--+.|. .|..|....|. .|.......|. .o-------+. ...........
Gevraagd wordt om te berekenen wat het minimum aantal stappen is dat genomen moet worden om de eerste overlap van de twee draden te bekomen, waarbij het aantal stappen gelijk is aan de som van de stappen benodigd voor beide draden. In het geval van de overlap in het punt X, zijn er 8 + 5 + 5 + 2 = 20 stappen nodig voor de eerste draad en 7 + 6 + 4 + 3 = 20 stappen voor de tweede draad. Dit levert een totaal van 40 stappen op. In het geval van de overlap in het punt Y, zijn er 8 + 5 + 2 = 15 en 7 + 6 + 2 = 15 stappen nodig voor de eerste en de tweede draad, respectievelijk. Dit levert een totaal van 30 stappen op, waardoor het punt Y dus eerder bereikt kan worden dan het punt X.
Voorzie een functie "overlap" die als input twee strings heeft (de paden van beide draden) en als output een geheel getal teruggeeft (het minimum aantal stappen benodigd om tot de eerste overlap te komen). Bijvoorbeeld:
overlap("R8,U5,L5,D3", "U7,R6,D4,L4") # 30