#include "iostream"
#include "algorithm"
#include "vector"
#include "set"
#include "map"
#include "cstring"
#include "string"
#include "vector"
#include "cassert"
#include "queue"
#include "cstdio"
#include "cstdlib"
#include "ctime"
#include "cmath"
#include "bitset"
#include "unordered_map"

using namespace std;

typedef long long ll;
typedef pair < int, int > ii;

const int N = 50000 + 5;
const int K = 200;

int n, m;
bool h[N];
vector < int > v[N];
unordered_map < int, int > M[N];

int main () {
    
    scanf("%d %d", &n, &m);
    
    for(int i = 1; i <= m; i++) {
        int x, y;
        scanf("%d %d", &x, &y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
    
    ll ans = 0;
    
    for(int i = 1; i <= n; i++)
        if(v[i].size() <= K)
            for(auto x : v[i])
                for(auto y : v[i])
                    if(x < y)
                        ans += M[x][y]++;
    
    for(int i = 1; i <= n; i++) {
        if(v[i].size() > K) {
            for(auto x : v[i])
                h[x] = 1;
            for(int j = 1; j <= n; j++) {
                if(j != i and (v[j].size() <= K or j < i)) {
                    int cnt = 0;
                    for(auto y : v[j])
                        if(y != i and h[y])
                            ans += cnt++;
                }
            }
            for(auto x : v[i])
                h[x] = 0;
        }
    }
    
    printf("%lld\n", ans / 2);
    
    return 0;
    
}