#include <bits/stdc++.h>
using namespace std;
int n, m;
char arr1[20][150];
int arr[20][150];
int sum[20];
struct node {
  int l, r;
} STU[20];
void input() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> arr1[i];
    STU[i].l = STU[i].r = -1;
  }
  for (int i = n - 1; i >= 0; i--) {
    for (int j = 0; j < m + 2; j++) {
      arr[i][j] = arr1[n - 1 - i][j] - '0';
      if (arr[i][j]) {
        if (STU[i].l == -1) {
          STU[i].l = STU[i].r = j;
        } else {
          STU[i].l = min(STU[i].l, j);
          STU[i].r = max(STU[i].r, j);
        }
        sum[i]++;
      }
    }
  }
}
int dfs(int x, int flag) {
  long long res = 0;
  int cur;
  if (flag == 0) {
    if (sum[x] == 0) {
      int f1 = 0;
      for (int j = x + 1; j < n; j++) {
        if (sum[j]) {
          f1 = 1;
          break;
        }
      }
      if (!f1) {
        return res;
      }
      res = min(1 + dfs(x + 1, 0), 1 + m + 1 + dfs(x + 1, 1));
      return res;
    }
    res += STU[x].r;
    if (x == n - 1) {
      return res;
    } else {
      int f1 = 0;
      for (int j = x + 1; j < n; j++) {
        if (sum[j]) {
          f1 = 1;
          break;
        }
      }
      if (!f1) {
        return res;
      } else {
        res = min(res + STU[x].r + 1 + dfs(x + 1, 0),
                  res + m + 1 - STU[x].r + 1 + dfs(x + 1, 1));
        return res;
      }
    }
  } else {
    if (sum[x] == 0) {
      int f1 = 0;
      for (int j = x + 1; j < n; j++) {
        if (sum[j]) {
          f1 = 1;
          break;
        }
      }
      if (!f1) {
        return res;
      }
      res = min(1 + m + 1 + dfs(x + 1, 0), 1 + dfs(x + 1, 1));
      return res;
    }
    res += m + 1 - STU[x].l;
    if (x == n - 1) {
      return res;
    } else {
      int f1 = 0;
      for (int j = x + 1; j < n; j++) {
        if (sum[j]) {
          f1 = 1;
          break;
        }
      }
      if (!f1) {
        return res;
      } else {
        res = min(res + STU[x].l + 1 + dfs(x + 1, 0),
                  res + m + 1 - STU[x].l + 1 + dfs(x + 1, 1));
        return res;
      }
    }
  }
}
int main() {
  input();
  long long res = dfs(0, 0);
  cout << res << endl;
  return 0;
}
