#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3005;
struct Edge {
  int a, b;
};
Edge E[MAXN * 10];
int n, m, M[MAXN][MAXN], W[MAXN][MAXN];
long long f(long long t) { return t * (t - 1) / 2; }
int main() {
  scanf("%d %d", &n, &m);
  for (int i = (0); i < (int)(m); i++) {
    int a, b;
    scanf("%d %d", &a, &b);
    --a;
    --b;
    E[i].a = a;
    E[i].b = b;
    M[a][b]++;
  }
  for (int i = (0); i < (int)(m); i++) {
    int p = E[i].a;
    int q = E[i].b;
    for (int r = (0); r < (int)(n); r++) {
      if (M[q][r]) {
        W[p][r]++;
      }
    }
  }
  long long ans = 0;
  for (int i = (0); i < (int)(n); i++) {
    for (int j = (0); j < (int)(n); j++) {
      if (i != j) ans += f(W[i][j]);
    }
  }
  printf("%lld\n", ans);
  return 0;
}
