#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int n;
struct Range{
int l,r;
bool operator < (const Range &w) const {
return l < w.l;
}
}range[N];
int main(){
int s,t;
scanf("%d%d",&s,&t);
scanf("%d",&n);
for(int i = 0;i < n;i ++){
int l,r;
scanf("%d%d",&l,&r);
range[i] = {l,r};
}
sort(range,range + n);
bool success = false;
int res = 0;
for(int i = 0;i < n;i ++){
int j = i,r = -2e9;
while(range[j].l <= s && j < n){
r = max(range[j].r,r);
j ++;
}
if(r < s){
res = -1;
break;
}
res ++;
if(r >= t){
success = true;
break;
}
s = r;
i = j - 1;
}
if(!success) res = -1;
printf("%d\n",res);
return 0;
}