#include <bits/stdc++.h>
using namespace std;
const int MAXN = 600;
int mat[2000][2000];
int quad[20][20];
int cont[20][20];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  int foi = 0;
  int result = -1;
  for (int i = 0; i < m; i++) {
    int x, y;
    for (int h = 0; h < 5; h++) {
      for (int k = 0; k < 5; k++) {
        quad[h][k] = 0;
        cont[h][k] = 0;
      }
    }
    scanf("%d%d", &x, &y);
    x--;
    y--;
    mat[x][y]++;
    int maiorX = max(x - 2, 0);
    int menorX = min(x + 2, n - 1) + 1;
    int maiorY = max(y - 2, 0);
    int menorY = min(y + 2, n - 1) + 1;
    for (int h = maiorX; h < menorX; h++) {
      for (int k = maiorY; k < menorY; k++) {
        if (mat[h][k]) {
          cont[h - maiorX][k - maiorY]++;
          if (h - maiorX - 1 >= 0) {
            cont[h - maiorX][k - maiorY] += cont[h - maiorX - 1][k - maiorY];
          }
        }
      }
    }
    int pode = 0;
    for (int h = 0; h < 5; h++) {
      int soma = 0;
      for (int k = 0; k < 5; k++) {
        if (cont[h][k] >= 3) {
          soma++;
          if (soma >= 3) {
            pode = 1;
          }
        } else {
          soma = 0;
        }
      }
    }
    if (foi == 0 && pode) {
      result = i + 1;
      foi = 1;
    }
  }
  printf("%d\n", result);
  return 0;
}
