// C++ implementation of the approach
#include <bits/stdc++.h>
#define ll long long
using namespace std;
// Driver code
int main()
{
ll i,j,N,m,x,y;
cin >> N >> m;
ll mul[N][N];
ll hash[N],in[N],out[N];
memset(in,0,sizeof(in));
memset(out,0,sizeof(out));
ll a[N][N];
ll k = 2, res[N][N];
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
a[i][j]=0;
}
}
for(i=0;i<m;++i)
{
cin >> x >> y;
--x;
--y;
a[x][y]=1;
in[y]++;
out[x]++;
}
ll ans=0;
for(i=0;i<N;++i)
{
for(j=0;j<N;j++)
{
if(i==j || out[i]<3 || in[j]<3)
continue;
ll c=0;
for(x=0;x<N;x++)
{
if(a[i][x] && a[x][j])
c++;
}
ll temp=c;
if(c>=3)
{
ans+=((temp)*(temp-1)*(temp-2))/6;
}
}
}
/*for (ll i = 0; i < N; i++) {
for (ll j = 0; j < N; j++) {
mul[i][j] = 0;
for (ll k = 0; k < N; k++)
mul[i][j] += a[i][k] * a[k][j];
}
}
for (ll i = 0; i < N; i++)
for (ll j = 0; j < N; j++)
res[i][j] = mul[i][j]; */
/*ll ans=0;
for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
if(i!=j)
{
ans+=(a[i][j]*(hash[j]-1));
}
}
}*/
/* for(i=0;i<N;++i)
{
for(j=0;j<N;++j)
{
if(i==j)
continue;
if(res[i][j]>=3)
{
ll temp=res[i][j];
ans+=((temp)*(temp-1)*(temp-2))/6;
}
}
}*/
cout << ans;
return 0;
}
Ci8vIEMrKyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYXBwcm9hY2ggCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPiAKI2RlZmluZSBsbCBsb25nIGxvbmcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCgovLyBEcml2ZXIgY29kZSAKaW50IG1haW4oKSAKeyAKCWxsIGksaixOLG0seCx5OwoJCgljaW4gPj4gTiA+PiBtOwoJbGwgbXVsW05dW05dOyAKCWxsIGhhc2hbTl0saW5bTl0sb3V0W05dOwoJbWVtc2V0KGluLDAsc2l6ZW9mKGluKSk7CgltZW1zZXQob3V0LDAsc2l6ZW9mKG91dCkpOwoJbGwgYVtOXVtOXTsKCQlsbCBrID0gMiwgcmVzW05dW05dOyAKCWZvcihpPTA7aTxOOysraSkKCXsKCQlmb3Ioaj0wO2o8TjsrK2opCgkJewoJCQlhW2ldW2pdPTA7CgkJfQoJfQoJZm9yKGk9MDtpPG07KytpKQoJewoJCWNpbiA+PiB4ID4+IHk7CgkJLS14OwoJCS0teTsKCQlhW3hdW3ldPTE7CgkJaW5beV0rKzsKCQlvdXRbeF0rKzsKCX0KCWxsIGFucz0wOwoJZm9yKGk9MDtpPE47KytpKQoJewoJCWZvcihqPTA7ajxOO2orKykKCQl7CgkJCWlmKGk9PWogfHwgb3V0W2ldPDMgfHwgaW5bal08MykKCQkJCWNvbnRpbnVlOwoJCQlsbCBjPTA7CgkJCWZvcih4PTA7eDxOO3grKykKCQkJewoJCQkJaWYoYVtpXVt4XSAmJiBhW3hdW2pdKQoJCQkJCWMrKzsKCQkJCQkKCQkJfQoJCQlsbCB0ZW1wPWM7CgkJCWlmKGM+PTMpCgkJCXsKCQkJCWFucys9KCh0ZW1wKSoodGVtcC0xKSoodGVtcC0yKSkvNjsKCQkJfQoJCX0KCX0KCS8qZm9yIChsbCBpID0gMDsgaSA8IE47IGkrKykgeyAKCQlmb3IgKGxsIGogPSAwOyBqIDwgTjsgaisrKSB7IAoJCQltdWxbaV1bal0gPSAwOyAKCQkJZm9yIChsbCBrID0gMDsgayA8IE47IGsrKykgCgkJCQltdWxbaV1bal0gKz0gYVtpXVtrXSAqIGFba11bal07IAoJCX0gCgl9IAoKCWZvciAobGwgaSA9IDA7IGkgPCBOOyBpKyspIAoJCWZvciAobGwgaiA9IDA7IGogPCBOOyBqKyspIAoJCQlyZXNbaV1bal0gPSBtdWxbaV1bal07ICovCgoKCgkvKmxsIGFucz0wOwoJZm9yKGk9MDtpPE47KytpKQoJewoJCWZvcihqPTA7ajxOOysraikKCQl7CgkJCWlmKGkhPWopCgkJCXsKCQkJCWFucys9KGFbaV1bal0qKGhhc2hbal0tMSkpOwoJCQl9CgkJfQoJfSovCi8qCWZvcihpPTA7aTxOOysraSkKCXsKCQlmb3Ioaj0wO2o8TjsrK2opCgkJewoJCQlpZihpPT1qKQoJCQkJY29udGludWU7CgkJCWlmKHJlc1tpXVtqXT49MykKCQkJewoJCQkJbGwgdGVtcD1yZXNbaV1bal07CgkJCQlhbnMrPSgodGVtcCkqKHRlbXAtMSkqKHRlbXAtMikpLzY7CgkJCX0KCQl9Cgl9Ki8KCWNvdXQgPDwgYW5zOwoJcmV0dXJuIDA7IAp9IAo=