#include<bits/stdc++.h>
#define F first
#define S second
using namespace std;
typedef pair<int,int> pr;
inline int rd(){
int x=0,y=1;char c=getchar();
for(;c<'0'||c>'9';c=getchar())if(c=='-')y=-1;
for(;c>='0'&&c<='9';c=getchar())x=(x<<1)+(x<<3)+(c^48);
return x*y;
}
const int N=5005;
int n,m,d[N][N],f[N],g[N];vector<int> vc[N];queue<int>q;
int main(){
n=rd();m=rd();
for(int x,y;m--;)x=rd(),y=rd(),vc[x].push_back(y);m=n;
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j)d[i][j]=1e9;q.push(i);d[i][i]=0;
while(!q.empty()){
int x=q.front();q.pop();
for(int y:vc[x])if(d[i][y]>1e8)d[i][y]=d[i][x]+1,q.push(y);
}
}
for(int i=1;i<=n;++i)for(int j=1;j<=i;++j)if(d[i][j]+d[j][i]<1e8){f[i]=j;break;}
for(int i=1;i<=n;++i)g[f[i]]=1e9;
for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)if(i!=j&&d[i][j]<1e8)
{if(f[i]!=f[j])g[f[i]]=-1;else g[f[i]]=min(g[f[i]],d[i][j]+d[j][i]);}
for(int i=1;i<=n;++i)if(g[f[i]]>1e8)g[f[i]]=-1;
for(int i=1;i<=n;++i)if(i==f[i]&&g[i]!=-1)m+=998*g[i]+1;
cout<<m;return 0;
}