#include <iostream>
#include <map>
#include <vector>
using namespace std;
int cou=0;
int main()
{
int n,m,a,b;
map< int,vector<int> > tr;//存放数据
cin >> n >> m;
while(m--) //建立map Maps是一种关联式容器,包含“关键字/值”对
{
cin >> a >> b ;
tr[a].push_back(b);
tr[b].push_back(a);
}
map< int,vector<int> >::iterator it = tr.begin(); //创建迭代器 逐个遍历关键词
for(;it!=tr.end();it++)
{
int i = it->first; //first表示关键字的值 因为是在map里面 所以要拿值就要同first 第二个值就用second
//1 2 3 4
//cout << i;
//vector<int> &tr2 = tr[i]; //通过关键字 继续搜索关键中存放的vector
//对每一个关键字 访问他的vector
vector<int>::iterator it2 = it->second.begin(); //创建迭代器 来遍历vector
for(;it2!=it->second.end();it2++)
{
int i2 = *it2 ;
vector<int> &tr3 = tr[i2];
vector<int>::iterator it3 = tr3.begin();
for(;it3!=tr3.end();it3++)
{
int i3 = *it3;
if(i3==i) continue;
vector<int> &tr4 = tr[i3];
vector<int>::iterator it4 = tr4.begin();
for(;it4!=tr4.end();it4++)
{
int i4 = *it4;
if(i4==i2) continue;
cou++;
}
}
}
//cout << endl;
}
cout << cou;
return 0;
}