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))
}