#include<bits/stdc++.h>
using namespace std;
int tzg[1000],csy[1000],head,tail,n,m,d[1000];
vector<int> v[1000];

int main()
{
	int res=0;
	cin >>n>>m;
	for(int i=0;i<m;i++)
	{
		int a,b;
		cin >>a>>b;
		v[a].push_back(b);
		tzg[b]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(!tzg[i]) 
		{
			csy[++tail]=i;
		}
	}
	while(head<tail)
	{
		int x=csy[++head];
		res=max(res,d[x]);
		for(int y=0;y<v[x].size();y++)
		{
			tzg[v[x][y]]--;
			d[v[x][y]]=max(d[v[x][y]],d[x]+1);
			if(!tzg[v[x][y]]) csy[++tail]=v[x][y];
		}
	}
	cout <<res;
	return 0;
}
