#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
const int len = 15;
const int MAX = (1 << len) - 1;
int n;
int m;
int p[8], cnt[1024];
int g[1024][1024];
int g1[1024][1024];
int w[1024][32];
int one[MAX + 1];
inline int calc(int x) { return one[x & MAX] + one[x >> len]; }
int main() {
  for (int i = 1; i <= MAX; i++) one[i] = one[i >> 1] + (i & 1);
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    g[a][b] = g[b][a] = 1;
    w[a][b / 30] |= 1 << (b % 30);
    w[b][a / 30] |= 1 << (a % 30);
    cnt[a]++;
    cnt[b]++;
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      for (int k = 0; k < n; k++) g1[i][k] += g[i][j] & g[j][k];
  long long ans = 0;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      for (int k = 0; k < n; k++)
        ans += (long long)g[i][k] * g1[i][j] * g1[j][k] * g[i][k];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (g[i][j]) {
        int cur = 0;
        for (int k = 0; k < 32; k++) cur += calc(w[i][k] & w[j][k]);
        ans -= 5 * cur * (cnt[i] - 1);
      }
  cout << ans / 10 << endl;
  return 0;
}
