/*
  B - Good Distance
  D次元空間上にN個の点があります。
  i番目の点とj番目の点の距離が整数となるような
  組(i,j)(i<j)はいくつあるでしょうか？
 */

 import java.util.*;

 public class Main{
   public static void main(String[]args){
     Scanner sc=new Scanner(System.in);
     while(sc.hasNext()){
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     }
   }
 } import java.util.*; util.* java public class Main{
   public static void main(String[]args){
     Scanner sc=new Scanner(System.in);
     while(sc.hasNext()){
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     }
   }
 } Main public static void main(String[]args){
     Scanner sc=new Scanner(System.in);
     while(sc.hasNext()){
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     }
   } main {
     Scanner sc=new Scanner(System.in);
     while(sc.hasNext()){
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     }
   } Scanner sc=new Scanner(System.in); sc new Scanner(System.in) while(sc.hasNext()){
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     } sc.hasNext() sc.hasNext sc {
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     } 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 for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       } int s=0; int s=0; s 0 s<n s n s++ s++ s {
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       } {
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       } for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         } int k=0; int k=0; k 0 k<d k d k++ k++ k {
           x[s][k]=sc.nextInt();
         } {
           x[s][k]=sc.nextInt();
         } x[s][k]=sc.nextInt() x[s][k] x[s] x s k sc.nextInt() sc.nextInt sc int count=0; count 0 int total=0; total 0 int ans=0; ans 0 double ans2=0; ans2 0 for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       } int k=0; int k=0; k 0 k<n-1 k n-1 n 1 k++ k++ k {
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       } {
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       } for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         } int l=k+1; int l=k+1; l k+1 k 1 l<n l n l++ l++ l {
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         } {
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         } total=0 total 0 for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           } int s=0; int s=0; s 0 s<d s d s++ s++ s {
             total+=Math.pow(x[k][s]-x[l][s],2);
           } {
             total+=Math.pow(x[k][s]-x[l][s],2);
           } total+=Math.pow(x[k][s]-x[l][s],2) total Math.pow(x[k][s]-x[l][s],2) Math.pow Math x[k][s]-x[l][s] x[k][s] x[k] x k s x[l][s] x[l] x l s 2 ans=(int)Math.sqrt(total) ans (int)Math.sqrt(total) Math.sqrt Math total ans2=Math.sqrt(total) ans2 Math.sqrt(total) Math.sqrt Math total if(ans==ans2){
             count++;
           } ans==ans2 ans ans2 {
             count++;
           } count++ count System.out.println(count) System.out.println System.out System System.out count String[]args args public class Main{
   public static void main(String[]args){
     Scanner sc=new Scanner(System.in);
     while(sc.hasNext()){
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     }
   }
 } public class Main{
   public static void main(String[]args){
     Scanner sc=new Scanner(System.in);
     while(sc.hasNext()){
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     }
   }
 } Main
/*
  B - Good Distance
  D次元空間上にN個の点があります。
  i番目の点とj番目の点の距離が整数となるような
  組(i,j)(i<j)はいくつあるでしょうか？
 */

 import java.util.*;

 public class Main{
   public static void main(String[]args){
     Scanner sc=new Scanner(System.in);
     while(sc.hasNext()){
       int n=sc.nextInt();
       int d=sc.nextInt();
       int x[][]=new int[n][d];

       for(int s=0;s<n;s++){
         for(int k=0;k<d;k++){
           x[s][k]=sc.nextInt();
         }
       }

       int count=0;
       int total=0;
       int ans=0;
       double ans2=0;

       for(int k=0;k<n-1;k++){
         for(int l=k+1;l<n;l++){
            total=0;
           for(int s=0;s<d;s++){
             total+=Math.pow(x[k][s]-x[l][s],2);
           }
           ans=(int)Math.sqrt(total);
           ans2=Math.sqrt(total);
           if(ans==ans2){
             count++;
           }
         }
       }


       System.out.println(count);
     }
   }
 }
