import java.util.*;
import java.math.BigDecimal;
import java.math.MathContext;

public class Main {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int d=sc.nextInt();
    int[][] x=new int[n][d];
    int ans=0;
    BigDecimal z=BigDecimal.valueOf(0);
    for(int i=0;i<n;i++){
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    }
    System.out.println(ans);
  }

  public static BigDecimal sqrt(BigDecimal a, int scale){
    BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64);
    if(scale < 17) return x;
    BigDecimal b2 = new BigDecimal(2);
    for(int tempScale = 16; tempScale < scale; tempScale *= 2){
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    }
    return x;
  }
} import java.util.*; util.* java import java.math.BigDecimal; BigDecimal java.math import java.math.MathContext; MathContext java.math public class Main {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int d=sc.nextInt();
    int[][] x=new int[n][d];
    int ans=0;
    BigDecimal z=BigDecimal.valueOf(0);
    for(int i=0;i<n;i++){
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    }
    System.out.println(ans);
  }

  public static BigDecimal sqrt(BigDecimal a, int scale){
    BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64);
    if(scale < 17) return x;
    BigDecimal b2 = new BigDecimal(2);
    for(int tempScale = 16; tempScale < scale; tempScale *= 2){
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    }
    return x;
  }
} Main public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int d=sc.nextInt();
    int[][] x=new int[n][d];
    int ans=0;
    BigDecimal z=BigDecimal.valueOf(0);
    for(int i=0;i<n;i++){
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    }
    System.out.println(ans);
  } main {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int d=sc.nextInt();
    int[][] x=new int[n][d];
    int ans=0;
    BigDecimal z=BigDecimal.valueOf(0);
    for(int i=0;i<n;i++){
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    }
    System.out.println(ans);
  } Scanner sc=new Scanner(System.in); sc new Scanner(System.in) int n=sc.nextInt(); n sc.nextInt() sc.nextInt sc int d=sc.nextInt(); d sc.nextInt() sc.nextInt sc int[][] x=new int[n][d]; x new int[n][d] n d int ans=0; ans 0 BigDecimal z=BigDecimal.valueOf(0); z BigDecimal.valueOf(0) BigDecimal.valueOf BigDecimal 0 for(int i=0;i<n;i++){
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    } int i=0; int i=0; i 0 i<n i n i++ i++ i {
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    } {
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    } for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      } int k=0; int k=0; k 0 k<d k d k++ k++ k {
        x[i][k]=sc.nextInt();
      } {
        x[i][k]=sc.nextInt();
      } x[i][k]=sc.nextInt() x[i][k] x[i] x i k sc.nextInt() sc.nextInt sc for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      } int j=0; int j=0; j 0 j<i j i j++ j++ j {
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      } {
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      } long a=0; a 0 for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        } int k=0; int k=0; k 0 k<d k d k++ k++ k {
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        } {
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        } a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]) a a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]) a (x[i][k]-x[j][k])*(x[i][k]-x[j][k]) (x[i][k]-x[j][k]) x[i][k] x[i] x i k x[j][k] x[j] x j k (x[i][k]-x[j][k]) x[i][k] x[i] x i k x[j][k] x[j] x j k BigDecimal aa=BigDecimal.valueOf(a); aa BigDecimal.valueOf(a) BigDecimal.valueOf BigDecimal a aa=sqrt(aa,5) aa sqrt(aa,5) sqrt aa 5 BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN); b aa.setScale(0,BigDecimal.ROUND_DOWN) aa.setScale aa 0 BigDecimal.ROUND_DOWN BigDecimal BigDecimal.ROUND_DOWN b=aa.subtract(b) b aa.subtract(b) aa.subtract aa b if(b.compareTo(z)==0){
          ans++;
        } b.compareTo(z)==0 b.compareTo(z) b.compareTo b z 0 {
          ans++;
        } ans++ ans System.out.println(ans) System.out.println System.out System System.out ans String[] args args public static BigDecimal sqrt(BigDecimal a, int scale){
    BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64);
    if(scale < 17) return x;
    BigDecimal b2 = new BigDecimal(2);
    for(int tempScale = 16; tempScale < scale; tempScale *= 2){
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    }
    return x;
  } sqrt {
    BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64);
    if(scale < 17) return x;
    BigDecimal b2 = new BigDecimal(2);
    for(int tempScale = 16; tempScale < scale; tempScale *= 2){
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    }
    return x;
  } BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64); x new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64) if(scale < 17) return x; scale < 17 scale 17 return x; x BigDecimal b2 = new BigDecimal(2); b2 new BigDecimal(2) for(int tempScale = 16; tempScale < scale; tempScale *= 2){
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    } int tempScale = 16; int tempScale = 16; tempScale 16 tempScale < scale tempScale scale tempScale *= 2 tempScale *= 2 tempScale 2 {
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    } {
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    } x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN)) x x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN)) x.subtract x x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN) x.multiply(x).subtract(a).divide x.multiply(x).subtract(a) x.multiply(x).subtract x.multiply(x) x.multiply x x a x.multiply(b2) x.multiply x b2 scale BigDecimal.ROUND_HALF_EVEN BigDecimal BigDecimal.ROUND_HALF_EVEN return x; x BigDecimal a a int scale scale public class Main {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int d=sc.nextInt();
    int[][] x=new int[n][d];
    int ans=0;
    BigDecimal z=BigDecimal.valueOf(0);
    for(int i=0;i<n;i++){
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    }
    System.out.println(ans);
  }

  public static BigDecimal sqrt(BigDecimal a, int scale){
    BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64);
    if(scale < 17) return x;
    BigDecimal b2 = new BigDecimal(2);
    for(int tempScale = 16; tempScale < scale; tempScale *= 2){
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    }
    return x;
  }
} public class Main {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int d=sc.nextInt();
    int[][] x=new int[n][d];
    int ans=0;
    BigDecimal z=BigDecimal.valueOf(0);
    for(int i=0;i<n;i++){
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    }
    System.out.println(ans);
  }

  public static BigDecimal sqrt(BigDecimal a, int scale){
    BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64);
    if(scale < 17) return x;
    BigDecimal b2 = new BigDecimal(2);
    for(int tempScale = 16; tempScale < scale; tempScale *= 2){
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    }
    return x;
  }
} Main
import java.util.*;
import java.math.BigDecimal;
import java.math.MathContext;

public class Main {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int d=sc.nextInt();
    int[][] x=new int[n][d];
    int ans=0;
    BigDecimal z=BigDecimal.valueOf(0);
    for(int i=0;i<n;i++){
      for(int k=0;k<d;k++){
        x[i][k]=sc.nextInt();
      }
      for(int j=0;j<i;j++){
        long a=0;
        for(int k=0;k<d;k++){
          a=a+(x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
        }
        BigDecimal aa=BigDecimal.valueOf(a);
        aa=sqrt(aa,5);
        BigDecimal b=aa.setScale(0,BigDecimal.ROUND_DOWN);
        b=aa.subtract(b);
        if(b.compareTo(z)==0){
          ans++;
        }
      }
    }
    System.out.println(ans);
  }

  public static BigDecimal sqrt(BigDecimal a, int scale){
    BigDecimal x = new BigDecimal(Math.sqrt(a.doubleValue()), MathContext.DECIMAL64);
    if(scale < 17) return x;
    BigDecimal b2 = new BigDecimal(2);
    for(int tempScale = 16; tempScale < scale; tempScale *= 2){
      x = x.subtract(x.multiply(x).subtract(a).divide(x.multiply(b2), scale, BigDecimal.ROUND_HALF_EVEN));
    }
    return x;
  }
}