import java.util.Scanner;
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];

		for(int i=0; i<n; i++) {
		for(int j=0; j<d; j++) {
			x[i][j] = sc.nextInt();	
		}
		}
		int cou = 0;
		for(int i=0; i<n-1;i++) {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		}
			System.out.println(cou);
		}
	} import java.util.Scanner; Scanner java.util 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];

		for(int i=0; i<n; i++) {
		for(int j=0; j<d; j++) {
			x[i][j] = sc.nextInt();	
		}
		}
		int cou = 0;
		for(int i=0; i<n-1;i++) {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		}
			System.out.println(cou);
		}
	} 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];

		for(int i=0; i<n; i++) {
		for(int j=0; j<d; j++) {
			x[i][j] = sc.nextInt();	
		}
		}
		int cou = 0;
		for(int i=0; i<n-1;i++) {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		}
			System.out.println(cou);
		} main {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int d = sc.nextInt();
		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();	
		}
		}
		int cou = 0;
		for(int i=0; i<n-1;i++) {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		}
			System.out.println(cou);
		} 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 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 int cou = 0; cou 0 for(int i=0; i<n-1;i++) {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		} int i=0; int i=0; i 0 i<n-1 i n-1 n 1 i++ i++ i {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		} {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		} for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		} int j=i+1; int j=i+1; j i+1 i 1 j<n j n j++ j++ j {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		} {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		} int kyori = 0; kyori 0 for(int k=0; k<d; k++) {
				kyori +=  (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 {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		} {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		} kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]) kyori (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 for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		} int l=0; int l=0; l 0 l<=kyori l kyori l++ l++ l {
				if(kyori == l*l) {
					cou++;
				}
		} {
				if(kyori == l*l) {
					cou++;
				}
		} if(kyori == l*l) {
					cou++;
				} kyori == l*l kyori l*l l l {
					cou++;
				} cou++ cou System.out.println(cou) System.out.println System.out System System.out cou String[] args args 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];

		for(int i=0; i<n; i++) {
		for(int j=0; j<d; j++) {
			x[i][j] = sc.nextInt();	
		}
		}
		int cou = 0;
		for(int i=0; i<n-1;i++) {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		}
			System.out.println(cou);
		}
	} 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];

		for(int i=0; i<n; i++) {
		for(int j=0; j<d; j++) {
			x[i][j] = sc.nextInt();	
		}
		}
		int cou = 0;
		for(int i=0; i<n-1;i++) {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		}
			System.out.println(cou);
		}
	} Main
import java.util.Scanner;
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];

		for(int i=0; i<n; i++) {
		for(int j=0; j<d; j++) {
			x[i][j] = sc.nextInt();	
		}
		}
		int cou = 0;
		for(int i=0; i<n-1;i++) {
		for(int j=i+1; j<n; j++) {
			int kyori = 0;
			for(int k=0; k<d; k++) {
				kyori +=  (x[i][k]-x[j][k])*(x[i][k]-x[j][k]);
		}
			for(int l=0; l<=kyori; l++) {
				if(kyori == l*l) {
					cou++;
				}
		}
		}
		}
			System.out.println(cou);
		}
	}
