#include <bits/stdc++.h>
using namespace std;
struct node {
  int lft[11], rgt[11], sets;
  node() {
    memset(lft, -1, sizeof lft);
    memset(rgt, -1, sizeof rgt);
    sets = 0;
  }
  void unite(int x, int y) {
    sets--;
    for (int i = int(1); i < int(11); i++) {
      if (lft[i] == x) {
        lft[i] = y;
      }
      if (rgt[i] == x) {
        rgt[i] = y;
      }
    }
  }
};
const int MAX_M = 1e5 + 5;
const int MAX_N = 15;
node st[4 * MAX_M];
int grid[MAX_N][MAX_M];
int n, m, q;
node merge(node a, node b, int l, int r) {
  node c;
  for (int i = int(1); i < int(n + 1); i++) {
    c.lft[i] = a.lft[i];
    c.rgt[i] = b.rgt[i];
  }
  c.sets = a.sets + b.sets;
  for (int i = int(1); i < int(n + 1); i++) {
    if (grid[i][l] == grid[i][r]) {
      if (a.rgt[i] != b.lft[i]) {
        c.unite(a.rgt[i], b.lft[i]);
        a.unite(a.rgt[i], b.lft[i]);
      }
    }
  }
  return c;
}
void build(int p, int l, int r) {
  if (l == r) {
    for (int i = int(1); i < int(n + 1); i++) {
      st[p].lft[i] = st[p].rgt[i] = (l - 1) * n + i;
    }
    st[p].sets = n;
    for (int i = int(2); i < int(n + 1); i++) {
      if (grid[i][l] == grid[i - 1][l]) {
        st[p].unite(st[p].lft[i], st[p].rgt[i - 1]);
      }
    }
    return;
  }
  int mid = (l + r) / 2;
  build(p * 2, l, mid);
  build(p * 2 + 1, mid + 1, r);
  st[p] = merge(st[p * 2], st[p * 2 + 1], mid, mid + 1);
}
node query(int p, int l, int r, int i, int j) {
  if (l >= i && j >= r) {
    return st[p];
  }
  int mid = (l + r) / 2;
  node ret;
  if (mid >= j) {
    ret = query(p * 2, l, mid, i, j);
  } else if (mid < i) {
    ret = query(p * 2 + 1, mid + 1, r, i, j);
  } else {
    ret = merge(query(p * 2, l, mid, i, j), query(p * 2 + 1, mid + 1, r, i, j),
                mid, mid + 1);
  }
  return ret;
}
int main() {
  scanf("%d %d %d", &n, &m, &q);
  for (int i = int(1); i < int(n + 1); i++) {
    for (int j = int(1); j < int(m + 1); j++) {
      scanf("%d", &grid[i][j]);
    }
  }
  build(1, 1, m);
  for (int t = int(0); t < int(q); t++) {
    int l, r;
    scanf("%d %d", &l, &r);
    printf("%d\n", query(1, 1, m, l, r).sets);
  }
  return 0;
}
