private static int distance(Person a, Person b) {
		HashSet<Person> visited = new HashSet<Person>();
		HashMap<Person, Person> previous = new HashMap<Person, Person>();
		LinkedList<Person> queue = new LinkedList<Person>();
		queue.add(a);
		visited.add(a);
		Person p = a;
		while (!queue.isEmpty()) {
			p = queue.remove();
			if (p.equals(b)) {
				break;
			}
			else {
				for (Person q : getNeighbors(p)) {
					if (!visited.contains(q)) {
						queue.add(q);
						visited.add(q);
						previous.put(q, p);
					}
				}
			}
		}
		if (!p.equals(b))
			return 0; // No path found
		int distance = -1; // We're actually counting the # of nodes in the path, so ignore the first
		for (p = b; p != null; p = previous.get(p))
			distance++;
		return distance;
	}