#include<iostream>
#include<cstring>
#include<bitset>
#include<cstdio>
using namespace std;
const int maxn = 1005;
bitset<maxn>data[maxn];
int n,m;
void floyd(){
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
if(data[i][j]==1){
data[i]|=data[j];
}
}
}
}
int main(){
int i,j,a,b,ans;
scanf("%d%d",&n,&m);
memset(data,0,sizeof data);
for(i=1;i<=m;i++){
scanf("%d%d",&a,&b);
data[a][b] = 1;
}
floyd();
ans = 0;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(data[i][j]==1){
ans++;
}
}
}
cout<<n*(n-1)/2-ans<<endl;
return 0;
}