#include<bits/stdc++.h>
using namespace std;
int a[3001][3001];
bool v[3001];
vector<int> g[3001];
void dfs(int r,int d,int p)
{
v[r]=true;
if(d==2)
{a[p][r]++;}
// cout<<p<<r<<" ";}
if(d==2)
v[r]=false;
//return ;}
if(d<2)
{
for(int nn:g[r])
{
if(!v[nn])
dfs(nn,d+1,p);
}}
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
g[a].push_back(b);
}
// int a[n+1][m+1];
for(int i=0;i<3001;i++)
{
for(int j=0;j<3001;j++)
a[i][j]=0;
}
for(int i=1;i<=n;i++)
{dfs(i,0,i);
// cout<<"-";
// v={false};
memset(v,false,sizeof(v));
}
int c=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{if(a[i][j]==3)
c++;
a[j][i]=0;}
}
cout<<c<<"\n";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50ICBhWzMwMDFdWzMwMDFdOwpib29sIHZbMzAwMV07CnZlY3RvcjxpbnQ+IGdbMzAwMV07CnZvaWQgZGZzKGludCByLGludCBkLGludCBwKQp7Cgl2W3JdPXRydWU7CgoJaWYoZD09MikKCXthW3BdW3JdKys7fQovLwljb3V0PDxwPDxyPDwiICI7fQoJaWYoZD09MikKCXZbcl09ZmFsc2U7CgkvL3JldHVybiA7fQoJaWYoZDwyKQoJewoJZm9yKGludCBubjpnW3JdKQoJewoJCWlmKCF2W25uXSkKCQlkZnMobm4sZCsxLHApOwoJfX0KfQppbnQgbWFpbigpCnsKCWludCBuLG07CgljaW4+Pm4+Pm07Cglmb3IoaW50IGk9MDtpPG07aSsrKQoJewoJCWludCBhLGI7CgkJY2luPj5hPj5iOwoJCWdbYV0ucHVzaF9iYWNrKGIpOwoJfQovLwlpbnQgYVtuKzFdW20rMV07Cglmb3IoaW50IGk9MDtpPDMwMDE7aSsrKQoJewoJCWZvcihpbnQgaj0wO2o8MzAwMTtqKyspCgkJYVtpXVtqXT0wOwoJfQoJZm9yKGludCBpPTE7aTw9bjtpKyspCgl7ZGZzKGksMCxpKTsKLy8JY291dDw8Ii0iOwovLwl2PXtmYWxzZX07CgltZW1zZXQodixmYWxzZSxzaXplb2YodikpOwoJfQoJaW50IGM9MDsKCWZvcihpbnQgaT0xO2k8PW47aSsrKQoJewoJCWZvcihpbnQgaj0xO2o8PW47aisrKQoJCXtpZihhW2ldW2pdPT0zKQoJCWMrKzsKCQlhW2pdW2ldPTA7fQoJfQoJCgljb3V0PDxjPDwiXG4iOwoJcmV0dXJuIDA7CgkKCQoJCgkKCQoJCn0=