#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200005;
int m, k, n, ans = 0;
queue<int> pos[MAXN];
unordered_set<int> mac;
queue<int> ice;
void an_pai(int x) {
ice.pop(), pos[x].pop();
if (mac.find(x) == mac.end()) {
ans++;
if ((int)mac.size() < k) {
mac.insert(x);
return;
}
int far = 0, bes;
for (auto it:mac)
if (pos[it].empty()) {
mac.erase(it), mac.insert(x);
return ;
} else if (far < pos[it].front())
far = pos[it].front(), bes = it;
mac.erase(bes), mac.insert(x);
}
}
int main() {
scanf("%d%d%d", &n, &m, &k);
for (int i = 1, x; i <= n; i++) {
scanf("%d", &x);
pos[x].push(i);
ice.push(x);
}
while (ice.front())
an_pai(ice.front());
printf("%d", ans);
return 0;
}