#include <bits/stdc++.h>
using namespace std;
int cover[1005][1005], n;
int pd(int x, int y) {
  if ((x < 1) || (x > n) || (y < 1) || (y > n)) return 0;
  if ((x - 1 < 1) || (x + 1 > n) || (y - 1 < 1) || (y + 1 > n)) return 0;
  if (cover[x][y] == 0) return 0;
  if (cover[x - 1][y] == 0) return 0;
  if (cover[x][y - 1] == 0) return 0;
  if (cover[x - 1][y - 1] == 0) return 0;
  if (cover[x][y + 1] == 0) return 0;
  if (cover[x + 1][y] == 0) return 0;
  if (cover[x + 1][y + 1] == 0) return 0;
  if (cover[x - 1][y + 1] == 0) return 0;
  if (cover[x + 1][y - 1] == 0) return 0;
  return 1;
}
int main() {
  int m;
  scanf("%d%d", &n, &m);
  memset(cover, 0, sizeof(cover));
  int i, x, y;
  for (i = 1; i <= m; i++) {
    scanf("%d%d", &x, &y);
    cover[x][y] = 1;
    if (pd(x, y)) {
      printf("%d\n", i);
      return 0;
    }
    if (pd(x - 1, y)) {
      printf("%d\n", i);
      return 0;
    }
    if (pd(x - 1, y - 1)) {
      printf("%d\n", i);
      return 0;
    }
    if (pd(x, y - 1)) {
      printf("%d\n", i);
      return 0;
    }
    if (pd(x + 1, y)) {
      printf("%d\n", i);
      return 0;
    }
    if (pd(x, y + 1)) {
      printf("%d\n", i);
      return 0;
    }
    if (pd(x + 1, y + 1)) {
      printf("%d\n", i);
      return 0;
    }
    if (pd(x + 1, y - 1)) {
      printf("%d\n", i);
      return 0;
    }
    if (pd(x - 1, y + 1)) {
      printf("%d\n", i);
      return 0;
    }
  }
  printf("-1\n");
  return 0;
}
