n=gets.to_i
s=gets.chomp

# i=1
counter={}
s.split("").each_with_index{|c,i| counter[c]=[] if not counter.key?(c); counter[c]<<i}
tmpa=counter.to_a.reject{|a| a[1].size<=1}
if tmpa.size==0
  puts 0
  exit
end
p=[]
tmpa.each{|a| a[1].combination(2){|b| p<<b}}

# i=2 ~
i=1
while true
  i+=1
  pn=[]
  p.each{|a| 
    # 重なるなら消す
    if (a[1]-a[0])<i
      #puts "overwrap #{a[0]} #{a[1]} #{i}"
      next
    end
    if s[a[0]+i-1].eql?(s[a[1]+i-1]) 
      #同じ文字列なら残す
      pn << a
    else
      #違う文字列なら消す
      #puts "diff #{a[0]} #{a[1]} #{i}"
      next
    end
  }
  if pn.size > 0
    p=pn
  else
    puts i-1
    exit
  end
end
