#include<bits/stdc++.h>
using namespace std;
#define int long long

int dp[100000];

vector<int>G[100000];

int func(int n){
    if(dp[n]!=0)
        return dp[n];
    int ans=-1;
    for(int i=0;i<G[n].size();i++)
        ans=max(ans,func(G[n][i]));
    return dp[n]=ans+1;
}

signed main(){
    int n,m,x,y;
    cin>>n>>m;
    while(cin>>x>>y)
        G[--x].push_back(--y);
    int ans=0;
    for(int i=0;i<n;i++)
        ans=max(ans,func(i));
    cout<<ans<<endl;
}
