package main import ( "bufio" "fmt" "os" "strconv" "strings" ) type Scanner struct { reader *bufio.Reader buffer []string pointer int } func NewScanner() *Scanner { return &Scanner{ reader: bufio.NewReaderSize(os.Stdin, 4096), pointer: 0, } } func (self *Scanner) NextLine() string { var buffer []byte for { line, isPrefix, _ := self.reader.ReadLine() buffer = append(buffer, line...) if !isPrefix { break } } return string(buffer) } func (self *Scanner) Next() string { if self.pointer >= len(self.buffer) { line := self.NextLine() self.buffer = strings.Fields(line) self.pointer = 0 } self.pointer++ return self.buffer[self.pointer-1] } func (self *Scanner) NextInt() int { s := self.Next() i, _ := strconv.ParseInt(s, 10, 32) return int(i) } func (self *Scanner) NextLong() int64 { s := self.Next() l, _ := strconv.ParseInt(s, 10, 64) return int64(l) } func (self *Scanner) NextFloat() float32 { s := self.Next() f, _ := strconv.ParseFloat(s, 32) return float32(f) } func (self *Scanner) NextDouble() float64 { s := self.Next() d, _ := strconv.ParseFloat(s, 64) return float64(d) } func main() { cin := NewScanner() N := cin.NextInt() S := make([]string, N) for i := 0; i < N; i++ { S[i] = cin.Next() } freq := make([]int, 1000+1) for i := 0; i < N; i++ { cnt := 0 for _, c := range S[i] { if c == '^' { cnt++ } } freq[cnt]++ } maxFreq := 0 maxCount := 0 for i := 0; i < 1000+1; i++ { if freq[i] > maxCount { maxFreq = i maxCount = freq[i] } else if freq[i] == maxCount { maxFreq = i } } fmt.Println(maxFreq) }