小红闯沼泽地
题号:NC262098
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红来到了一片沼泽地的岸边,她希望能通过这片沼泽地。
这个沼泽地地图用一个矩阵进行表示。1代表沼泽,0代表平地。小红刚开始在矩阵的左上角,她需要从右下角离开地图。已知进入地图和离开地图的时间可以忽略。小红可以向左、向右或者向下走。
当小红从沼泽进入沼泽,或者平地进入平地时,需要花费1单位时间。
当小红从沼泽进入平地,或者平地进入沼泽时,由于需要更换装备,所以要花2单位时间。
小红可以从左上角进入地图,从右下角离开地图。
小红想知道,经过这片沼泽地,最少需要花费多少单位时间。

输入描述:

第一行输入两个正整数 nm,用空格隔开,代表矩阵的行数和列数。
接下来的 n 行,每行输入 m 个正整数 ,用来表示矩阵。
2\leq n,m \leq 2000 ,

输出描述:

输出一个正整数,代表经过沼泽地的最少时间。
示例1

输入

复制
3 3
1 0 0
1 1 1
0 0 1

输出

复制
4

说明

从左上角进入,往下走一次,往右走兩次,往下走一次,到右下角。花费4单位时间。
可以证明,这样花费的时间一定是最小的。