#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 1<<17;
int s[N], e[N], Nxt[N][20];
int main(){
int n, q;
cin>>n>>q;
vector<pair<int, int>> vec;
for (int i=1;i<=n;i++){
cin>>s[i]>>e[i];
vec.push_back({s[i], -i});
vec.push_back({e[i] + 1, i});
}
sort(begin(vec), end(vec));
int mx = 0, ind;
for (auto [p, id] : vec){
// if (id < 0)
// cout<<"Add "<<-id<<' '<<s[-id]<<' '<<e[-id]<<'\n';
if (id < 0 and mx < e[-id])
mx = e[-id], ind = -id;
else if (id > 0)
Nxt[id][0] = (mx <= e[id] ? id : ind);//, cout<<id<<' '<<ind<<'\n';
// if (id > 0)
// cout<<"Nxt "<<s[id]<<' '<<e[id]<<' '<<Nxt[id][0]<<'\n';
}
for (int j=0;j<18;j++){
for (int i=1;i<=n;i++)
Nxt[i][j+1] = Nxt[Nxt[i][j]][j];
}
for (int i=1;i<=q;i++){
int S, E, Ans = 0;
cin>>S>>E;
while (e[S] + 1 < s[E] and Ans >= 0){
if (Nxt[S][0] == S)
Ans = -3;
S = Nxt[S][0], Ans++;
}
if (Ans >= 0 and e[E] >= e[S])
cout<<Ans + (S != E)<<'\n';
else
cout<<"impossible\n";
}
}