#include <bits/stdc++.h>
using namespace std;
int n, m;
char room[105][10005];
bool isBrick(int i, int j) { return room[i][j] == '+' ? true : false; }
bool isConcrete(int i, int j) { return room[i][j] == '#' ? true : false; }
bool isEmpty(int i, int j) { return room[i][j] == '.' ? true : false; }
bool isRight(int j) { return j == m ? true : false; }
bool isLeft(int j) { return j == -1 ? true : false; }
bool hasEmpty(int i) {
  int j;
  for (j = 0; j < m; j++) {
    if (room[i][j] == '.') return true;
  }
  return false;
}
int main(int argc, char const *argv[]) {
  int i, j, k, dir, flr, cell, l, r;
  long long int cnt;
  int ls, rs;
  int step;
  bool isFirst = false;
  bool isL, isR;
  isL = isR = false;
  while (scanf("%d%d", &n, &m) != EOF) {
    memset(room, 0, sizeof(room));
    cnt = 0;
    dir = 1;
    flr = 0;
    cell = 0;
    ls = rs = 0;
    l = -1;
    r = m;
    getchar();
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        scanf("%c", &room[i][j]);
      }
      getchar();
    }
    for (;;) {
      step = 1;
      if (flr == n - 1) {
        isFirst = true;
        break;
      }
      if (isEmpty(flr + 1, cell)) {
        flr++;
        ls = rs = cell;
        isL = isR = false;
      } else {
        if (dir == 1) {
          if (!isRight(cell + 1)) {
            if (isEmpty(flr, cell + 1)) {
              cell++;
            } else {
              if (isBrick(flr, cell + 1)) {
                room[flr][cell + 1] = '.';
              } else if (isConcrete(flr, cell + 1)) {
                if (cell + 1 == r) {
                  isR = true;
                } else {
                  r = cell + 1;
                }
              }
              dir = 0;
              rs = cell;
              cell = ls;
              step = rs - ls + 1;
            }
          } else {
            dir = 0;
            if (cell + 1 == r) {
              isR = true;
            } else {
              r = cell + 1;
            }
            rs = cell;
            cell = ls;
            step = rs - ls + 1;
          }
        } else {
          if (!isLeft(cell - 1)) {
            if (isEmpty(flr, cell - 1)) {
              cell--;
            } else {
              if (isBrick(flr, cell - 1)) {
                room[flr][cell - 1] = '.';
              } else if (isConcrete(flr, cell - 1)) {
                if (cell - 1 == l) {
                  isL = true;
                } else {
                  l = cell - 1;
                }
              }
              dir = 1;
              ls = cell;
              cell = rs;
              step = rs - ls + 1;
            }
          } else {
            dir = 1;
            if (cell - 1 == l) {
              isL = true;
            } else {
              l = cell - 1;
            }
            ls = cell;
            cell = rs;
            step = rs - ls + 1;
          }
        }
      }
      cnt += step;
      if (isL && isR) {
        isFirst = false;
        break;
      }
    }
    if (isFirst)
      printf("%I64d\n", cnt);
    else
      printf("Never\n");
  }
  return 0;
}
