Reference List for Fairly Common Syntax Highlighting Styles

2026-01-13

Just a super-quick reference for the standard set of styles avaliable in a lot of Pygments-derived code highlighters.

abap
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
algol
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
algol_nu
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
arduino
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
ashen
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
aura-theme-dark
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
aura-theme-dark-soft
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
autumn
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
average
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
base16-snazzy
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
borland
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
bw
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
catppuccin-frappe
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
catppuccin-latte
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
catppuccin-macchiato
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
catppuccin-mocha
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
colorful
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
doom-one
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
doom-one2
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
dracula
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
emacs
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
evergarden
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
friendly
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
fruity
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
github
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
github-dark
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
gruvbox
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
gruvbox-light
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
hr_high_contrast
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
hrdark
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
igor
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
lovelace
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
manni
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
modus-operandi
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
modus-vivendi
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
monokai
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
monokailight
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
murphy
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
native
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
nord
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
nordic
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
onedark
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
onesenterprise
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
paraiso-dark
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
paraiso-light
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
pastie
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
perldoc
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
pygments
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
rainbow_dash
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
rose-pine
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
rose-pine-dawn
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
rose-pine-moon
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
RPGLE
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
rrt
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
solarized-dark
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
solarized-dark256
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
solarized-light
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
swapoff
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
tango
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
tokyonight-day
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
tokyonight-moon
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
tokyonight-night
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
tokyonight-storm
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
trac
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
vim
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
vs
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
vulcan
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
witchhazel
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
xcode
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file
xcode-dark
-- stack script --resolver lts-20.3 --package containers --package unordered-containers
import Data.List
import Data.Maybe
import Data.Sequence (Seq ((:<|)), (|>), fromList)
import Data.Map (Map, size, empty, update, insertWith)

data Scanner = Scanner {
    queue :: Seq Char,
    count :: Map Char Int
}

scan :: Scanner -> Char -> Scanner
scan (Scanner q c) x =
    let (y, q') = case q of y :<| q' -> (y, q')
        c' = Data.Map.update (\y -> if y == 1 then Nothing else Just (y - 1)) y c
        q'' = q' |> x
        c'' = insertWith (+) x 1 c'
    in Scanner q'' c''

main = do
    file <- readFile "input.txt"

    let n = 14

    let initial = Scanner {
        queue = fromList $ take n file,
        count = foldl (\m c -> insertWith (+) c 1 m) empty $ take n file
    }

    print $ (+ n) $ fromJust
          $ findIndex (\s -> n == (size $ count s))
          $ scanl scan initial
          $ drop n file