private int fitness(int[] permutation) {
		fitnessCalls++;
		int sum = 0;
		for (int[] s : initialSets) {
			final int[] newSet = new int[s.length];
			for (int i = 0; i < s.length; i++) {
				newSet[i] = permutation[s[i]];
			}
			Arrays.sort(newSet);
			
			int min = -1;
			int max = -1;
			for (int value : newSet) {
				if (min == -1) {
					min = max = value;
				} else if (value == max + 1) {
					max = value;
				} else {
					sum += min == max ? 1 : 2;
					min = max = value;
				}
			}
			sum += min == max ? 1 : 2;
		}
		return sum;
	}