#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e6+5;
void in(int &x){
char c=getchar();
while (c<'0' || c>'9') c=getchar();
for (x=0; c>='0' && c<='9'; c=getchar())
x=x*10+c-'0';
}
struct node
{
int num;
int id;
}a[N];
map <int, int> mp;
map <int, int> m;
bool cmp(node x, node y)
{
return x.num < y.num;
}
int main(){
ios::sync_with_stdio(false);
cin.tie();
int n;
cin >> n;
int sum = 0;
for (int i = 1; i <= n; i++)
{
cin >> a[i].num >> a[i].id;
mp[a[i].id]++;
if(mp[a[i].id] == 1) sum++;
}
sort (a + 1, a + n + 1, cmp);
int l = 1, r = 1, i;
int ret = 0, mn = INT_MAX;
while(l <= r)
{
while(r <= n && ret < sum)
{
m[a[r].id]++;
if(m[a[r].id] == 1) ret++;
r++;
}
if(ret == sum)
{
mn = min(mn, a[r - 1].num - a[l].num);
}
if(m[a[l].id] == 1)
{
m[a[l].id] = 0;
l++;
ret--;
}
else
{
for (i = l + 1; i <= n; i++)
{
if(a[l].id != a[i].id)
{
break;
}
}
l = i - 1;
m[a[l].id] = 1;
}
}
cout << mn << endl;
return 0;
}