// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
	input = input.split("\n");
	tmp = input[0].split(" ");
  var N = parseInt(tmp[0], 10);
  var D = parseInt(tmp[1], 10);

  var intInput = [];

  for(var i=1; i<=N; i++){
    intInput[i-1] = toIntAll(input[i].split(" "));
    // console.log(intInput[i-1]);
  }


  var count = 0;
  for(var i=0; i<(N-1); i++){
    for(var j=i+1; j<N; j++){
      var result = calcDistance(intInput[i], intInput[j]);
      if(Number.isInteger(result)){
        count++;
        // console.log(["final ",i,j,result]);
      }
    }
  }
  console.log('%d',count);
}

function toIntAll(input){
  var out = []
  for(var i=0; i<input.length; i++){
    out[i] = parseInt(input[i]);
  }
  return out;
}

function calcDistance(yArr, zArr){
  var sum = 0;
  // console.log(yArr);
  // console.log(yArr.length);
  
  for(var i=0; i<yArr.length; i++){
    sum += Math.pow(yArr[i] - zArr[i], 2);
    // console.log([yArr[i],zArr[i],sum]);
  }
  sum = Math.sqrt(sum);;
  // console.log(sum);
  return sum;
}

//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));