// 我们只需要考虑4中情况,其他的全都-1
// 1.....10....0
// 0.....01...1
// 1..........1
// 0...........0
// 然后就是模拟设法找到几个标志性的0和1
// 注意特判一下1,2,3,很特殊
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
vector<int>v;
int main() {
ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin>>n;
if (n == 1){
int t;cin>>t;
cout<<-1;return 0;
}else if (n == 2){
int a,b;cin>>a>>b;
if (a!= b)cout<<-1;
else cout<<1;
return 0;
}else if (n == 3){
int a,b,c;cin>>a>>b>>c;
if (a!= c){
cout<<-1;
}else {
cout<<1;
}return 0;
}
v.resize(n);
for (int i = 0;i < n;i++){
cin>>v[i];
}
if (v[0] == v[n-1]){
cout<<1;
return 0;
}
// 一般状况
bool flag = true;
if (v[0] == 0){
int zero = 1;
while (zero <n&&v[zero]) zero++;
if (zero>=n)
flag = false;
// one应该从zero+1开始找才行
int one = zero+1;
while (one <n-1&&v[one] == 0)one++;
if (one == n-1)
flag = false;
}else{
int one = 1;while (one < n&&v[one] == 0)one++;
if (one >= n)
flag = false;
int zero = one+1;
while (zero <n-1&&v[zero])zero++;
if (zero == n-1)
flag = false;
}
if (flag)
cout<<2;
else
cout<<-1;
return 0;
}
// 64 位输出请用 printf("%lld")