#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef vector<int> vi;
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) x.begin(), x.end()
#define sz(x) (ll)(x).size()
constexpr ll inf = 4e18;
mt19937 mt(time(0));
ll n, m;
struct range {
ll s, e;
range(ll s, ll e) {
this->s = (s % m + m) % m;
this->e = (e % m + m) % m;
assert(s != e);
}
bool contains(ll x) {
x = (x % m + m) % m;
if (s < e) return x >= s && x <= e;
else return x >= s || x <= e;
}
};
vector<range> read_ranges() {
vector<pll> tmp(n);
for (auto &[l, r] : tmp) {
cin >> l >> r;
if (l > r) r += m;
r = -r;
}
sort(all(tmp));
for (auto &[l, r] : tmp) r = -r;
pll last = pll(-1, -1);
deque<range> ranges;
deque<pll> ls;
for (auto &[l, r] : tmp) {
if (r <= last.second) continue;
while (sz(ls) && r - m >= ls[0].second) ranges.pop_front(), ls.pop_front();
ranges.emplace_back(l, r);
ls.emplace_back(l, r);
last = pll(l, r);
}
return vector<range>(all(ranges));
}
vector<ll> construct_graph(vector<range> ranges) {
assert(sz(ranges) == n && n > 1);
vector<ll> nxt(n);
ll j = 0;
for (ll i = 0; i < n; i++) {
if (j == i) j = (j+1) % n;
while (j != i && ranges[i].contains(ranges[j].s)) j = (j+1) % n;
nxt[i] = (n+j-1) % n;
}
return nxt;
}
void solve() {
cin >> n >> m;
vector<range> ranges = read_ranges();
n = sz(ranges);
if (n == 1) return cout << "-1\n", void();
vector<ll> nxt = construct_graph(ranges);
ll res = inf;
vector<bool> vis(n);
for (ll i = 0; i < n; i++) {
if (vis[i]) continue;
deque<ll> cur = {i};
while (true) {
assert(sz(cur) >= 1);
while (true) {
if (nxt[cur.back()] == cur.back()) goto skip;
cur.push_back(nxt[cur.back()]);
if (vis[cur.back()]) goto skip;
if (ranges[cur.front()].contains(ranges[cur.back()].e)) break;
}
res = min(res, sz(cur));
vis[cur.front()] = true;
cur.pop_front();
}
skip:;
for (auto &e : cur) vis[e] = true;
}
if (res == inf) cout << "-1\n";
else cout << res << '\n';
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
solve();
}