#!/usr/bin/env ruby input = gets.chomp.chars units = input.map(&:downcase).uniq lengths = {} units.each do |unit| polymer = input.dup polymer.delete_if {|u| u == unit || u == unit.upcase} nextpolymer = Array.new(polymer.length) nextpolymer[0] = polymer[0] index = 1 nextindex = 0 while index < polymer.length do if polymer[index].swapcase != nextpolymer[nextindex] nextindex += 1 nextpolymer[nextindex] = polymer[index] else nextpolymer[nextindex] = nil nextindex -= 1 end index += 1 end lengths[unit] = nextpolymer.compact.length end puts lengths.values.min