#include<iostream>
#include<set>
#include<vector>
#include<algorithm>
using namespace std;


int main()
{
	int n, k;
	cin >> n >> k;	// n-liczba butelek; k-liczba róznych butelek na początku
	vector<int> a;	// ciąg reprezentujący marki kolejnych butelek
	set<int> b;	// zbiór marek butelek
	
	// wczytywanie danych:
	for(int i=0;i<n;i++) 
		{
			int x; cin >> x; 
			if(b.size()<=k)	{a.push_back(x); b.insert(x);}	//gdy ma set zgromadzimy już ka wartości, to pojawiły się też one w a, ani a ani b nie powiększamy już.
		}
	//
	
	
	if (k>b.size())	cout << -1;
	else
	{
	int j = 0;
	int ans = 0;
	// idziemy po a, więc maksymalnie n razy.
	for(int i=0;i<n;i++)
	{	// tu robimy robotę dla każdego elemntu a, chyba, że skończymy wcześniej k wartości, to przerywamy
		// i - pozycja elementu w ciągu a. Potrzebujemy jeszcze j, któe reprzentuje pozycję, na którą musimy coś wstawić
		
		if(b.count(a[i])==1)	//jeżeli marka jest w secie, to jest jeszcze nieobsłużona, przestawiamy ją we właściwe miejsce, aktualizujemy miejsce i usuwamy z seta
		{
			ans += (i-j);
			j++;
			b.erase(a[i]);
		}
		if(b.size()==0) break;
	}
	
	cout << ans;
	
	}
	
	return 0;
}
