// 我们只需要考虑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")