public static List<AnnotatedRegion> annotateRegions(BotState state, List<Region> toRegions) {
		List<AnnotatedRegion> annotatedRegions = new ArrayList<>();

		// initialize
		for (Region region : state.getVisibleMap().getRegions()) {
			if (toRegions.contains(region)) {
				annotatedRegions.add(new AnnotatedRegion(region, 0));
			} else {
				annotatedRegions.add(new AnnotatedRegion(region, 100));
			}
		}

		// do the calculations
		// Now do the real stuff
		boolean hasSomethingChanged = true;
		while (hasSomethingChanged) {
			hasSomethingChanged = false;
			for (AnnotatedRegion annotatedRegion : annotatedRegions) {
				AnnotatedRegion closestNeighbor = getClosestNeighborToRegions(state, annotatedRegion, annotatedRegions);
				if (closestNeighbor.distance < annotatedRegion.distance
						&& annotatedRegion.distance != closestNeighbor.distance + 1) {
					annotatedRegion.distance = closestNeighbor.distance + 1;
					hasSomethingChanged = true;

				}
			}
		}

		return annotatedRegions;
	}