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 intArray[][] = new int[N][D];

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

		int cnt = 0;
		for(int i = 0 ;i < N-1;i++){
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		}

		System.out.println(cnt);

   		sc.close();
        return ;

    }
    
}
 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 intArray[][] = new int[N][D];

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

		int cnt = 0;
		for(int i = 0 ;i < N-1;i++){
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		}

		System.out.println(cnt);

   		sc.close();
        return ;

    }
    
} Main public static void main(String[] args) {
    	
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int D = sc.nextInt();
		
		int intArray[][] = new int[N][D];

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

		int cnt = 0;
		for(int i = 0 ;i < N-1;i++){
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		}

		System.out.println(cnt);

   		sc.close();
        return ;

    } main {
    	
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int D = sc.nextInt();
		
		int intArray[][] = new int[N][D];

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

		int cnt = 0;
		for(int i = 0 ;i < N-1;i++){
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		}

		System.out.println(cnt);

   		sc.close();
        return ;

    } 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 intArray[][] = new int[N][D]; intArray new int[N][D] N D for(int i = 0 ;i < N;i++){
			for(int j = 0 ;j < D;j++){
				intArray[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++){
				intArray[i][j] = sc.nextInt();
			}
		} {
			for(int j = 0 ;j < D;j++){
				intArray[i][j] = sc.nextInt();
			}
		} for(int j = 0 ;j < D;j++){
				intArray[i][j] = sc.nextInt();
			} int j = 0 ; int j = 0 ; j 0 j < D j D j++ j++ j {
				intArray[i][j] = sc.nextInt();
			} {
				intArray[i][j] = sc.nextInt();
			} intArray[i][j] = sc.nextInt() intArray[i][j] intArray[i] intArray i j sc.nextInt() sc.nextInt sc int cnt = 0; cnt 0 for(int i = 0 ;i < N-1;i++){
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		} int i = 0 ; int i = 0 ; i 0 i < N-1 i N-1 N 1 i++ i++ i {
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		} {
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		} for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			} int i2 = i+1 ; int i2 = i+1 ; i2 i+1 i 1 i2 < N i2 N i2++ i2++ i2 {
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			} {
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			} int sum = 0; sum 0 for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				} int j = 0 ; int j = 0 ; j 0 j < D j D j++ j++ j {
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				} {
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				} sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2) sum (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2) Math.pow Math Math.abs(intArray[i][j]-intArray[i2][j]) Math.abs Math intArray[i][j]-intArray[i2][j] intArray[i][j] intArray[i] intArray i j intArray[i2][j] intArray[i2] intArray i2 j 2 int sumd = (int)Math.round(Math.sqrt(sum)); sumd (int)Math.round(Math.sqrt(sum)) Math.round Math Math.sqrt(sum) Math.sqrt Math sum if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				} sum == Math.pow(sumd, 2) sum Math.pow(sumd, 2) Math.pow Math sumd 2 {
					cnt ++;
				} cnt ++ cnt System.out.println(cnt) System.out.println System.out System System.out cnt sc.close() sc.close sc return ; 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 intArray[][] = new int[N][D];

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

		int cnt = 0;
		for(int i = 0 ;i < N-1;i++){
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		}

		System.out.println(cnt);

   		sc.close();
        return ;

    }
    
} public class Main {

    public static void main(String[] args) {
    	
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int N = sc.nextInt();
		int D = sc.nextInt();
		
		int intArray[][] = new int[N][D];

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

		int cnt = 0;
		for(int i = 0 ;i < N-1;i++){
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		}

		System.out.println(cnt);

   		sc.close();
        return ;

    }
    
} 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 intArray[][] = new int[N][D];

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

		int cnt = 0;
		for(int i = 0 ;i < N-1;i++){
			for(int i2 = i+1 ;i2 < N;i2++){
				int sum = 0;
				for(int j = 0 ;j < D;j++){
					sum += (int) Math.pow(Math.abs(intArray[i][j]-intArray[i2][j]),2);
				}
				int sumd = (int)Math.round(Math.sqrt(sum));
				if(sum == Math.pow(sumd, 2)) {
					cnt ++;
				}
//			String st = String.valueOf(sumd);
//			if(st.matches( "^(0|[-]?[1-9][0-9]*)$" )) {
//				cnt ++;
//			};
			}
		}

		System.out.println(cnt);

   		sc.close();
        return ;

    }
    
}

