// Arup Guha
// 2/22/2017
// Solution to 2017 February USACO Silver Problem: Why Did the Cow Cross the Road II? (maxcross)

import java.util.*;
import java.io.*;

public class maxcross {

	public static void main(String[] args) throws Exception {

		// Read input.
		BufferedReader stdin = new BufferedReader(new FileReader("maxcross.in"));
		StringTokenizer tok = new StringTokenizer(stdin.readLine());
		int n = Integer.parseInt(tok.nextToken());
		int goal = Integer.parseInt(tok.nextToken());
		int bad = Integer.parseInt(tok.nextToken());

		// Initially all good.
		int[] sum = new int[n];
		Arrays.fill(sum, 1);

		// Set the bad ones.
		for (int i=0; i<bad; i++)
			sum[Integer.parseInt(stdin.readLine().trim())-1] = 0;

		// Get sum of first goal items.
		int cur = 0;
		for (int i=0; i<goal; i++)
			cur += sum[i];

		// Set up best streak of goal.
		int best = cur;

		// Sweep across, keeping interval of size goal by sub last, adding next.
		for (int i=goal; i<n; i++) {
			cur += (sum[i] - sum[i-goal]);
			best = Math.max(best, cur);
		}

		// Output the result.
		PrintWriter out = new PrintWriter(new FileWriter("maxcross.out"));
		out.println(goal-best);
		out.close();
		stdin.close();
	}
}