import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt(),D=sc.nextInt();
		int[][] map = new int[N][D];
		int ans=0;

		for(int i=0;i<N;i++) {
			for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			}
		}

		for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			}
		}
		System.out.println(ans);
	}
} 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(),D=sc.nextInt();
		int[][] map = new int[N][D];
		int ans=0;

		for(int i=0;i<N;i++) {
			for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			}
		}

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

		for(int i=0;i<N;i++) {
			for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			}
		}

		for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			}
		}
		System.out.println(ans);
	} main {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt(),D=sc.nextInt();
		int[][] map = new int[N][D];
		int ans=0;

		for(int i=0;i<N;i++) {
			for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			}
		}

		for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					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 D=sc.nextInt(); D sc.nextInt() sc.nextInt sc int[][] map = new int[N][D]; map new int[N][D] N D int ans=0; ans 0 for(int i=0;i<N;i++) {
			for(int j=0;j<D;j++) {
				map[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++) {
				map[i][j]=sc.nextInt();
			}
		} {
			for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			}
		} for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			} int j=0; int j=0; j 0 j<D j D j++ j++ j {
				map[i][j]=sc.nextInt();
			} {
				map[i][j]=sc.nextInt();
			} map[i][j]=sc.nextInt() map[i][j] map[i] map i j sc.nextInt() sc.nextInt sc for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			}
		} int i=0; int i=0; i 0 i<N i N i++ i++ i {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			}
		} {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			}
		} for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			} int j=i+1; int j=i+1; j i+1 i 1 j<N j N j++ j++ j {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			} {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			} double d=0; d 0 for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				} int k=0; int k=0; k 0 k<D k D k++ k++ k {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				} {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				} d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]) d (map[i][k]-map[j][k])*(map[i][k]-map[j][k]) (map[i][k]-map[j][k]) map[i][k] map[i] map i k map[j][k] map[j] map j k (map[i][k]-map[j][k]) map[i][k] map[i] map i k map[j][k] map[j] map j k d=Math.sqrt(d) d Math.sqrt(d) Math.sqrt Math d if(d==Math.floor(d)) {
					ans++;
				} d==Math.floor(d) d Math.floor(d) Math.floor Math d {
					ans++;
				} ans++ ans System.out.println(ans) System.out.println System.out System System.out ans String[] args args public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt(),D=sc.nextInt();
		int[][] map = new int[N][D];
		int ans=0;

		for(int i=0;i<N;i++) {
			for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			}
		}

		for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			}
		}
		System.out.println(ans);
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt(),D=sc.nextInt();
		int[][] map = new int[N][D];
		int ans=0;

		for(int i=0;i<N;i++) {
			for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			}
		}

		for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			}
		}
		System.out.println(ans);
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N=sc.nextInt(),D=sc.nextInt();
		int[][] map = new int[N][D];
		int ans=0;

		for(int i=0;i<N;i++) {
			for(int j=0;j<D;j++) {
				map[i][j]=sc.nextInt();
			}
		}

		for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				double d=0;
				for(int k=0;k<D;k++) {
					d+=(map[i][k]-map[j][k])*(map[i][k]-map[j][k]);
				}
				d=Math.sqrt(d);
				if(d==Math.floor(d)) {
					ans++;
				}
			}
		}
		System.out.println(ans);
	}
}
