use std::io::{self, *};
fn main() {
let mut stdin = io::stdin();
let mut input = String::new();
stdin.read_to_string(&mut input).unwrap();
let mut lines = input.split_whitespace();
let n = lines.next().unwrap().parse::<usize>().unwrap();
let mut my = vec![Vec::new();n];
let mut dp = vec![vec![i32::MAX; n];n];
for i in 0..n {
let line = lines.next().unwrap().split(',');
for val in line {
my[i].push(val.parse::<i32>().unwrap());
}
}
// println!("{:?}", my);
if n == 1 { print!("{}", my[0][0]); return; }
dp[0][0] = my[0][0];
for i in 0..n {
for j in 0..n {
if i + 1 < n {
dp[i + 1][j] = dp[i + 1][j].min(my[i + 1][j] + dp[i][j]);
}
if j + 1 < n {
dp[i][j + 1] = dp[i][j + 1].min(my[i][j + 1] + dp[i][j]);
}
}
}
//println!("{:?}", dp);
print!("{}", dp[n - 1][n - 1]);
}