#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
int re=0;
queue<int> q;
int res[5005];
int ind[5005];
vector<int> v[5005];
cin>>n>>m;
int u,w;
for(int i=0;i<=n;i++){
ind[i]=0;
res[i]=1;
}
for(int i=1;i<=m;i++){
cin>>u>>w;
ind[u]++;
v[w].push_back(u);
}
for(int i=1;i<=n;i++){
if(ind[i]==0){
q.push(i);
}
}
while(1){
int r=q.front();
q.pop();
for(int i=0;i<v[r].size();i++){
ind[v[r][i]]--;
if(ind[v[r][i]]==0){
q.push(v[r][i]);
}
res[v[r][i]]=max(res[v[r][i]],res[r]+1);
}
if(q.empty()) break;
}
for(int i=1;i<=n;i++){
re=max(re,res[i]);
}
cout<<re;
return 0;
}