import java.util.Scanner;

class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int D = Integer.parseInt(sc.next());
		int[][] point = new int[N][D];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			}
		}
		int count = 0;
		for (int i = 1; i < N; i++) {
			for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			}
		}
		System.out.println(count);
		sc.close();
	}
} import java.util.Scanner; Scanner java.util class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int D = Integer.parseInt(sc.next());
		int[][] point = new int[N][D];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			}
		}
		int count = 0;
		for (int i = 1; i < N; i++) {
			for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			}
		}
		System.out.println(count);
		sc.close();
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int D = Integer.parseInt(sc.next());
		int[][] point = new int[N][D];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			}
		}
		int count = 0;
		for (int i = 1; i < N; i++) {
			for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			}
		}
		System.out.println(count);
		sc.close();
	} main {
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int D = Integer.parseInt(sc.next());
		int[][] point = new int[N][D];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			}
		}
		int count = 0;
		for (int i = 1; i < N; i++) {
			for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			}
		}
		System.out.println(count);
		sc.close();
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = Integer.parseInt(sc.next()); N Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int D = Integer.parseInt(sc.next()); D Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int[][] point = new int[N][D]; point new int[N][D] N D for (int i = 0; i < N; i++) {
			for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			}
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			}
		} {
			for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			}
		} for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			} int j = 0; int j = 0; j 0 j < D j D j++ j++ j {
				point[i][j] = Integer.parseInt(sc.next());
			} {
				point[i][j] = Integer.parseInt(sc.next());
			} point[i][j] = Integer.parseInt(sc.next()) point[i][j] point[i] point i j Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc int count = 0; count 0 for (int i = 1; i < N; i++) {
			for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			}
		} int i = 1; int i = 1; i 1 i < N i N i++ i++ i {
			for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			}
		} {
			for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			}
		} for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			} int j = 0; int j = 0; j 0 j < i j i j++ j++ j {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			} {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			} int distance_square = 0; distance_square 0 for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				} int k = 0; int k = 0; k 0 k < D k D k++ k++ k {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				} {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				} int distance = point[i][k] - point[j][k]; distance point[i][k] - point[j][k] point[i][k] point[i] point i k point[j][k] point[j] point j k distance_square += distance * distance distance_square distance * distance distance distance int distance_sqrt = (int) Math.sqrt(distance_square); distance_sqrt (int) Math.sqrt(distance_square) Math.sqrt Math distance_square if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				} distance_sqrt * distance_sqrt == distance_square distance_sqrt * distance_sqrt distance_sqrt distance_sqrt distance_square {
					count++;
				} count++ count System.out.println(count) System.out.println System.out System System.out count sc.close() sc.close sc String[] args args
import java.util.Scanner;

class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = Integer.parseInt(sc.next());
		int D = Integer.parseInt(sc.next());
		int[][] point = new int[N][D];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < D; j++) {
				point[i][j] = Integer.parseInt(sc.next());
			}
		}
		int count = 0;
		for (int i = 1; i < N; i++) {
			for (int j = 0; j < i; j++) {
				int distance_square = 0;
				for (int k = 0; k < D; k++) {
					int distance = point[i][k] - point[j][k];
					distance_square += distance * distance;
				}
				int distance_sqrt = (int) Math.sqrt(distance_square);
				if(distance_sqrt * distance_sqrt == distance_square) {
					count++;
				}
			}
		}
		System.out.println(count);
		sc.close();
	}
}