#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 5;
int n, q;
int nxt[maxn][20];
int mx[maxn];
vector<pair<int, int> > v;
void update(int x, int v) {
  while (x < maxn) {
    mx[x] = max(mx[x], v);
    x += x & (-x);
  }
}
int query(int x) {
  int ret = x;
  while (x) {
    ret = max(ret, mx[x]);
    x -= x & (-x);
  }
  return ret;
}
int getpa(int x, int p) {
  int cur = 0;
  int ret = x;
  while (p) {
    if (p & 1) {
      ret = nxt[ret][cur];
    }
    cur++;
    p >>= 1;
  }
  return ret;
}
void init() {
  cin >> n >> q;
  while (n--) {
    int add1, add2;
    cin >> add1 >> add2;
    add1++, add2++;
    update(add1, add2);
  }
  for (int i = 1; i <= 500001; i++) {
    nxt[i][0] = query(i);
  }
  for (int i = 1; i <= 19; i++) {
    for (int j = 1; j <= 500001; j++) {
      nxt[j][i] = nxt[nxt[j][i - 1]][i - 1];
    }
  }
}
void solve() {
  while (q--) {
    int x, y;
    cin >> x >> y;
    x++, y++;
    if (getpa(x, 500000) < y) {
      cout << -1 << '\n';
      continue;
    }
    int l = 0, r = 500000;
    while (r - l > 1) {
      int mid = (l + r) >> 1;
      if (getpa(x, mid) >= y) {
        r = mid;
      } else {
        l = mid;
      }
    }
    cout << r << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  init();
  solve();
}
