#include <bits/stdc++.h>
using namespace std;
bool g[1000][1000];
long long com[1000][1000];
int have[1000][1000];
long long deg[1000];
long long get(int n) {
  long long res = 0;
  memset(com, 0, sizeof com);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      for (int k = 0; k < n; k++)
        if (g[i][k] && g[j][k]) com[i][j]++;
    }
  memset(have, 0, sizeof have);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (g[i][j]) have[i][j] = 1;
  memset(deg, 0, sizeof deg);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (g[i][j]) deg[i]++;
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++)
      if (g[i][j]) {
        long long add = 0;
        for (int k = 0; k < n; k++)
          if (k != i && k != j) {
            add += (com[i][k] - have[j][k]) * (com[j][k] - have[i][k]);
          }
        res += add;
      }
  long long sub = 0;
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++)
      if (g[i][j]) {
        long long cur = 0;
        for (int k = 0; k < n; k++)
          if (g[i][k] && g[k][j]) {
            cur += (deg[k] - 2);
          }
        sub += cur;
      }
  res -= sub;
  assert(res % 5 == 0);
  res /= 5;
  return res;
}
int main() {
  int n;
  scanf("%d", &n);
  int m;
  scanf("%d", &m);
  memset(g, 0, sizeof g);
  for (int i = 0; i < m; i++) {
    int a;
    int b;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    g[a][b] = g[b][a] = true;
  }
  long long res = get(n);
  cout << res << endl;
  return 0;
}
