def calcs(x,y,ax,ay,bx,by) ((ax-x)*(by-y)-(bx-x)*(ay-y))/2.0 end
def inpf() a=gets.chomp.split(" ").map(&:to_f)end
def inps() a=gets.chomp.split(" ")end  
def copy(a) Marshal.load(Marshal.dump(a)) end
def kaizyo(n)(n < 2)? 1 : (2..n).inject(:*) end
def scount(a) b=na(a.max+1);a.each{|n|b[n]+=1};return b end
def na(n=0,d=0) Array.new(n,d)end
def na2(n=0,m=0,d=0) Array.new(n){Array.new(m,d)}end
def na3(n=0,m=0,l=0,d=0) Array.new(n){Array.new(m){Array.new(l,d)}}end
def bit(n) n.to_s(2).split("").map(&:to_i) end
def inp() a=gets.chomp.split(" ").map(&:to_i)end

n = inp[0]
t = []
n.times do 
  t.push(inp)
end
kyori = 0
t.sort_by!{|u|u[0]}
min = t[0][0]
max = t[-1][0]
mmax = []
mmin = []
  if(max == min)
    puts 0 
    exit
  end
t.each do |a|
  if(a[0] == max)
    mmax.push(a)
  elsif(a[0] == min)
    mmin.push(a)
  end
end
mmin.sort_by!{|u|u[1]}
mmax.sort_by!{|u|u[1]}
ans = 10**9
mi = 0
ma = 0
while (mmin[mi] != nil and mmax[ma] != nil)
  ans = [ans,(mmin[mi][1]-mmax[ma][1]).abs].min
  if(mmin[mi][1] > mmax[ma][1])
    ma += 1
  else
    mi += 1
  end  
end
p ans