using System; using System.IO; using System.Linq; namespace D5._2 { class Program { static void Main(string[] args) { if (args.Length < 1) return; if (File.Exists(args[0]) == false) return; var file = File.OpenText(args[0]); string polymer = file.ReadLine(); int shortest = polymer.Length; for (char i = 'A'; i <= 'Z'; i++) { var altera = AlterPolymer(polymer, i); Reduce(ref altera); if (altera.Length < shortest) shortest = altera.Length; } Console.WriteLine(shortest); } static void Reduce(ref string polymer) { for (int i = 1; i < polymer.Length; i++) { char cc = polymer[i]; char cm = polymer[i - 1]; if (Math.Abs(cc - cm) <= 26) continue; if (Up(cc) == Up(cm)) { polymer = polymer.Remove(i - 1, 2); i = Math.Max(0, i - 2); } } } static string AlterPolymer(string polymer, char unit) { string newPolymer = string.Empty; foreach (var car in polymer) { if (Up(car) == Up(unit)) continue; newPolymer += car; } return newPolymer; } static char Up(char c) { if (c >= 'A' && c <= 'Z') return c; return (char)('A' + (c - 'a')); } } }