#lang racket (define (solution) (define cs (for/list ((i (begin0 (read) (read-line))) (j (in-port read-char))) j)) (let loop ((cs cs) (alt 0) (rv 0)) (match* (cs alt) [((list) _) rv] [((cons #\U tl) (app add1 alt+)) (loop tl alt+ rv)] [((cons #\D tl) 0) (loop tl -1 (add1 rv))] [((cons #\D tl) (app sub1 alt-)) (loop tl alt- rv)]))) (solution)