#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
vector<pair<int, int>> e(m);
for (int i = 0; i < m; i++) cin >> e[i].first >> e[i].second;
sort(e.begin(), e.end());
int reach = 1; // 当前能到达的最高楼层
int idx = 0; // 下一部尚未处理的电梯
int rides = 0; // 已乘坐电梯的次数
while (reach < n) {
int best = reach;
while (idx < m && e[idx].first <= reach) {
best = max(best, e[idx].second);
idx++;
}
if (best == reach) break; // 没有能让人继续上楼的电梯
reach = best;
rides++;
}
if (reach >= n) cout << rides << '\n';
else cout << -1 << '\n';
return 0;
}