import java.util.*;

 class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int D = sc.nextInt();
        int cnt = 0;
        int[][] x = new int[N][D];
        for(int i = 0; i<N; i++) {
        	for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	}
        }

        double d = 0;
        for(int i=0; i<N; i++) {
        	for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	}
        }
        
        
        
        System.out.println(cnt);
    }
} import java.util.*; util.* java class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int D = sc.nextInt();
        int cnt = 0;
        int[][] x = new int[N][D];
        for(int i = 0; i<N; i++) {
        	for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	}
        }

        double d = 0;
        for(int i=0; i<N; i++) {
        	for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	}
        }
        
        
        
        System.out.println(cnt);
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int D = sc.nextInt();
        int cnt = 0;
        int[][] x = new int[N][D];
        for(int i = 0; i<N; i++) {
        	for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	}
        }

        double d = 0;
        for(int i=0; i<N; i++) {
        	for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	}
        }
        
        
        
        System.out.println(cnt);
    } main {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int D = sc.nextInt();
        int cnt = 0;
        int[][] x = new int[N][D];
        for(int i = 0; i<N; i++) {
        	for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	}
        }

        double d = 0;
        for(int i=0; i<N; i++) {
        	for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	}
        }
        
        
        
        System.out.println(cnt);
    } 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 cnt = 0; cnt 0 int[][] x = new int[N][D]; x new int[N][D] N D for(int i = 0; i<N; i++) {
        	for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	}
        } int i = 0; int i = 0; i 0 i<N i N i++ i++ i {
        	for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	}
        } {
        	for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	}
        } for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	} int j = 0; int j = 0; j 0 j<D j D j++ j++ j {
            	x[i][j] = sc.nextInt();        		
        	} {
            	x[i][j] = sc.nextInt();        		
        	} x[i][j] = sc.nextInt() x[i][j] x[i] x i j sc.nextInt() sc.nextInt sc double d = 0; d 0 for(int i=0; i<N; i++) {
        	for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	}
        } int i=0; int i=0; i 0 i<N i N i++ i++ i {
        	for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	}
        } {
        	for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	}
        } for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	} int j = i + 1; int j = i + 1; j i + 1 i 1 j<N j N j++ j++ j {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	} {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	} d = 0 d 0 for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		} int k = 0; int k = 0; k 0 k<D k D k++ k++ k {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		} {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		} d= d + Math.pow(x[i][k] - x[j][k], 2) d d + Math.pow(x[i][k] - x[j][k], 2) d Math.pow(x[i][k] - x[j][k], 2) Math.pow Math x[i][k] - x[j][k] x[i][k] x[i] x i k x[j][k] x[j] x j k 2 d = Math.pow(d, 1.0/2) d Math.pow(d, 1.0/2) Math.pow Math d 1.0/2 1.0 2 if(d==Math.floor(d)) {
    				cnt++;
    			} d==Math.floor(d) d Math.floor(d) Math.floor Math d {
    				cnt++;
    			} cnt++ cnt System.out.println(cnt) System.out.println System.out System System.out cnt String[] args args
import java.util.*;

 class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int D = sc.nextInt();
        int cnt = 0;
        int[][] x = new int[N][D];
        for(int i = 0; i<N; i++) {
        	for(int j = 0; j<D; j++) {
            	x[i][j] = sc.nextInt();        		
        	}
        }

        double d = 0;
        for(int i=0; i<N; i++) {
        	for(int j = i + 1; j<N; j++) {
        		d = 0;
        		for(int k = 0; k<D; k++) {
            		d= d + Math.pow(x[i][k] - x[j][k], 2); 
        		}
    			d = Math.pow(d, 1.0/2);
    			if(d==Math.floor(d)) {
    				cnt++;
    			}
        	}
        }
        
        
        
        System.out.println(cnt);
    }
}