package main
import (
"fmt"
"strings"
)
func solution(arr [][]int) int {
for r := 0; r < len(arr); r++ {
for c := 0; c < len(arr[0]); c++ {
if r == 0 && c == 0 {
continue
}
if r > 0 && c > 0 {
//可选右下
arr[r][c] += max(arr[r][c-1], arr[r-1][c])
} else if r > 0 {
//可选下
arr[r][c] += arr[r-1][c]
} else if c > 0 {
//可选右
arr[r][c] += arr[r][c-1]
}
}
}
return arr[len(arr)-1][len(arr[0])-1]
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func getScore(str string) int {
switch str {
case "l":
return 4
case "o":
return 3
case "v":
return 2
case "e":
return 1
default:
return 0
}
}
/*
*
2 3
lle
ove
结果
11
*/
func main() {
var n, m int
fmt.Scan(&n)
fmt.Scan(&m)
dp := make([][]int, n)
for r := 0; r < n; r++ {
tmp := make([]int, m)
var t string
fmt.Scan(&t)
tt := strings.Split(t, "")
for i := 0; i < len(t); i++ {
tmp[i] = getScore(tt[i])
}
dp[r] = tmp
}
fmt.Println(solution(dp))
}