1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
require "strscan"

input = ARGF.read.strip
input = input.gsub(/!./, "")

p input.scan(/<[^>]*>/).map {|g| g.size - 2 }.sum

input = input.gsub(/<[^>]*>/, "")
  .gsub(?,, "")

ss = StringScanner.new(input)
score = 0
group = 0
until ss.eos?
  case
  when ss.scan(/\{/)
    group += 1
  when ss.scan(/\}/)
    score += group
    group -= 1
  else
    raise "omg!"
  end
end
p score