#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e18;
const long long minf = -(1e18);
const long long mod = 1e9 + 7;
const long long med = 1e9 + 9;
inline long long add(long long x, long long y) {
  x += y;
  if (x >= mod) x -= mod;
  return x;
}
inline long long sub(long long x, long long y) {
  x -= y;
  if (x < 0) x += mod;
  return x;
}
inline long long mul(long long x, long long y) { return (x * 1ll * y) % mod; }
long long power(long long x, long long y) {
  if (y == 0) return 1;
  if (y == 1) return x;
  long long ans = power(x, y / 2) % mod;
  ans *= ans;
  ans %= mod;
  if (y % 2) ans *= x;
  return ans % mod;
}
long long inv(long long x, long long y) {
  x += mod;
  y += mod;
  x %= mod;
  y %= mod;
  long long ret = (power(y, mod - 2) % mod) * x;
  return (ret % mod);
}
vector<int> in[3001];
vector<int> out[3001];
bool arr[3001][3001];
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  long long n, m;
  cin >> n >> m;
  long long x, y;
  for (int i = 1; i <= 3000; i++) {
    for (int j = 1; j <= 3000; j++) {
      arr[i][j] = false;
    }
  }
  for (int i = 1; i <= m; i++) {
    cin >> x >> y;
    out[x].push_back(y);
    in[y].push_back(x);
    arr[x][y] = true;
  }
  long long ans = 0;
  long long p = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i != j) {
        p = 0;
        for (int l = 0; l < out[i].size(); l++) {
          if (arr[out[i][l]][j]) p++;
        }
        ans += (p * (p - 1)) / 2;
      }
    }
  }
  cout << ans;
  return 0;
}
