//           _____                  _______                  _____                   _____
//          /\    \                /::\    \                /\    \                 /\    \
//         /::\    \              /::::\    \              /::\____\               /::\    \
//        /::::\    \            /::::::\    \            /:::/    /              /::::\    \
//       /::::::\    \          /::::::::\    \          /:::/    /              /::::::\    \
//      /:::/\:::\    \        /:::/~~\:::\    \        /:::/    /              /:::/\:::\    \
//     /:::/__\:::\    \      /:::/    \:::\    \      /:::/    /              /:::/__\:::\    \
//    /::::\   \:::\    \    /:::/    / \:::\    \    /:::/    /              /::::\   \:::\    \
//   /::::::\   \:::\    \  /:::/____/   \:::\____\  /:::/    /      _____   /::::::\   \:::\    \
//  /:::/\:::\   \:::\    \|:::|    |     |:::|    |/:::/____/      /\    \ /:::/\:::\   \:::\    \
// /:::/  \:::\   \:::\____|:::|____|     |:::|____|:::|    /      /::\____/:::/  \:::\   \:::\____\
// \::/    \:::\  /:::/    /\:::\   _\___/:::/    /|:::|____\     /:::/    \::/    \:::\  /:::/    /
//  \/____/ \:::\/:::/    /  \:::\ |::| /:::/    /  \:::\    \   /:::/    / \/____/ \:::\/:::/    /
//           \::::::/    /    \:::\|::|/:::/    /    \:::\    \ /:::/    /           \::::::/    /
//            \::::/    /      \::::::::::/    /      \:::\    /:::/    /             \::::/    /
//            /:::/    /        \::::::::/    /        \:::\__/:::/    /              /:::/    /
//           /:::/    /          \::::::/    /          \::::::::/    /              /:::/    /
//          /:::/    /            \::::/____/            \::::::/    /              /:::/    /
//         /:::/    /              |::|    |              \::::/    /              /:::/    /
//         \::/    /               |::|____|               \::/____/               \::/    /
//          \/____/                 ~~                      ~~                      \/____/
//I am aqua
#include<bits/stdc++.h>
typedef long long ll;
typedef long double ld;
#define mp make_pair
#define speed  ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fo for(int i=0;i<n;i++) cin>>a[i];
#define pb push_back
#define pob pop_back
#define pf push_front
#define pof pop_front
#define l first
#define r second
#define input.txt ifstream fin("input.txt"); ofstream fout("output.txt");
using namespace std;
//---------------------------------------------------------------------------------------------------------------------
const int maxn=1e5+10;
//---------------------------------------------------------------------------------------------------------------------
int n , m , a[maxn] , dp[maxn];
vector<int>adj[maxn];
int Dp(int n)
{
    if(adj[n].size()==0)
        return 0;
    if(dp[n]!=0)
        return dp[n];
    int mx=0;
    for(int i=0;i<adj[n].size();i++)
    {
        int u=adj[n][i];
        if(dp[u]==0)
            dp[u]=Dp(u);
        mx=max(mx,dp[u]);
    }
    return mx+1;
}
//---------------------------------------------------------------------------------------------------------------------
int main()
{
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
        int x,y;
        cin>>x>>y;
        adj[y].pb(x);
    }
    int mx=0;
    for(int i=1;i<=n;i++)
    {
        mx=max(mx,Dp(i));
    }
    cout<<mx;
}
//I know that ;
//I know where I am
//Do not think I don't


Measured memory_bytes: 10624