CF250E Mad Joe
题目描述
Joe 在网上受到了伤害。现在他正在家里暴走,沿途摧毁一切。
Joe 的房子有 $n$ 层,每一层是一段由 $m$ 个格子组成的区域。每个格子要么什么都没有(即为空格),要么有一块砖头,要么有一道混凝土墙(每个格子只会是这三种情况之一)。认为每一层的最左边和最右边都有一道混凝土墙包围。
现在 Joe 站在第 $n$ 层(顶层)最左边的第一个格子(从左到右数)。每一时刻,Joe 有一个注视方向,朝右或朝左(二选一)。最开始的时候 Joe 朝右看。
Joe 按以下算法移动。每秒他执行下列操作之一:
- 如果 Joe 正下方的格子是空的,Joe 就下落到那格子,注视方向保持不变。
- 否则,考虑他当前注视方向的下一个格子:
- 如果该格子为空,Joe 就走进去,注视方向保持不变。
- 如果该格子有砖头,Joe 用额头撞碎(该格子变为空),并且改变注视方向为相反方向。
- 如果该格子是混凝土墙,Joe 只会改变注视方向为相反方向(混凝土能承受无数次撞击)。
当 Joe 到达任意一个第一层的格子时,他就会冷静下来。
下图展示了 Joe 在房子中的一段移动过程。

请你计算 Joe 冷静下来需要多少秒。
输入格式
第一行包含两个整数 $n$ 和 $m$($2 \le n \le 100$,$1 \le m \le 10^{4}$)。
接下来 $n$ 行描述 Joe 的房子。第 $i$ 行描述的是房子的第 $(n-i+1)$ 层——这一行是由 $m$ 个字符组成的字符串:`.` 表示空格,`+` 表示砖头,`#` 表示混凝土墙。
数据保证第 $n$ 层第一个格子(最左边的格子)为空。
输出格式
输出一个整数,表示 Joe 到达第一层所需的秒数;或者,如果 Joe 永远无法到达第一层,输出单词 Never。
说明/提示
由 ChatGPT 5 翻译