import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws Exception { FastScanner sc = new FastScanner(System.in); PrintWriter pw = new PrintWriter(System.out); StringBuilder sb = new StringBuilder(); int n = sc.nextInt(); boolean[] bomb = new boolean[n]; Balloon[] bl = new Balloon[n]; for(int i = 0; i < n; i++){ int x = sc.nextInt(); int y = sc.nextInt(); bl[i] = new Balloon(x,y); } ArrayList dl = new ArrayList<>(); for(int i = 0; i < n; i++){ for(int j = i+1; j < n; j++){ dl.add(new Dist(i,j,(long)(bl[i].x-bl[j].x)*(bl[i].x-bl[j].x) + (long)(bl[i].y-bl[j].y)*(bl[i].y-bl[j].y))); } } Collections.sort(dl); int ans = 0; for(Dist d : dl){ //pw.println(d.i + " " + d.j + " " + d.dist); if(d.i != 0 && d.j != 0){ if(!bomb[d.i] && !bomb[d.j]){ bomb[d.i] = true; bomb[d.j] = true; } }else if(d.i == 0){ if(!bomb[d.j]) ans++; bomb[d.j] = true; }else{ if(!bomb[d.i]) ans++; bomb[d.i] = true; } } pw.println(ans); pw.flush(); } static class GeekInteger { public static void save_sort(int[] array) { shuffle(array); Arrays.sort(array); } public static int[] shuffle(int[] array) { int n = array.length; Random random = new Random(); for (int i = 0, j; i < n; i++) { j = i + random.nextInt(n - i); int randomElement = array[j]; array[j] = array[i]; array[i] = randomElement; } return array; } } } class Balloon{ int x,y; public Balloon(int x, int y){ this.x = x; this.y = y; } } class Dist implements Comparable{ int i,j; long dist; public Dist(int i, int j, long dist){ this.i = i; this.j = j; this.dist = dist; } public int compareTo(Dist d){ if(this.dist < d.dist){ return -1; }else if(this.dist > d.dist){ return 1; }else{ return 0; } } } class FastScanner { private BufferedReader reader = null; private StringTokenizer tokenizer = null; public FastScanner(InputStream in) { reader = new BufferedReader(new InputStreamReader(in)); tokenizer = null; } public String next() { if (tokenizer == null || !tokenizer.hasMoreTokens()) { try { tokenizer = new StringTokenizer(reader.readLine()); } catch (IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public String nextLine() { if (tokenizer == null || !tokenizer.hasMoreTokens()) { try { return reader.readLine(); } catch (IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken("\n"); } public long nextLong() { return Long.parseLong(next()); } public int nextInt() { return Integer.parseInt(next()); } public double nextDouble() { return Double.parseDouble(next()); } public String[] nextArray(int n) { String[] a = new String[n]; for (int i = 0; i < n; i++) a[i] = next(); return a; } public int[] nextIntArray(int n) { int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = nextInt(); return a; } public long[] nextLongArray(int n) { long[] a = new long[n]; for (int i = 0; i < n; i++) a[i] = nextLong(); return a; } }