← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

var trie [100010][26]int
var count [100010]int
var nodeCount int = 1

func dfs(u int) int {
	maxChild := 0
	for c := 0; c < 26; c++ {
		if trie[u][c] != 0 {
			val := dfs(trie[u][c])
			if val > maxChild {
				maxChild = val
			}
		}
	}
	return count[u] + maxChild
}

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Buffer(make([]byte, 1024*1024), 1024*1024)
	scanner.Split(bufio.ScanWords)

	if !scanner.Scan() {
		return
	}

	for scanner.Scan() {
		s := scanner.Text()
		curr := 1
		for i := len(s) - 1; i >= 0; i-- {
			c := s[i] - 'a'
			if trie[curr][c] == 0 {
				nodeCount++
				trie[curr][c] = nodeCount
			}
			curr = trie[curr][c]
		}
		count[curr]++
	}

	fmt.Println(dfs(1))
}