#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;


int main(){
	
	int n;
	while(cin>>n,n){
		
		vector<int>V1;
		vector<int>V2;
		for(int i=0;i<n;i++){
			int t;
			cin>>t;
			V1.push_back(t);
		}
		
		int cnt=0;
		
		while(1){
			if(cnt>10000){
				cout<<-1<<endl;
				break;
			}
			if(cnt%2){
				int f=1;
				for(int i=0;i<V2.size();i++){
					if(i+1!=V2[i]){
						f=0;
						break;
					}
				}
				if(f){
					cout<<cnt<<endl;
					break;
				}
				cnt++;
				
				V1.clear();
				for(int i=0;i<V2.size();i++){
					if(V2[i]>1){
						V1.push_back(V2[i]-1);
					}
				}
				V1.push_back(V2.size());
			}
			else{
				
				int f=1;
				for(int i=0;i<V1.size();i++){
					if(i+1!=V1[i]){
						f=0;
						break;
					}
				}
				if(f){
					cout<<cnt<<endl;
					break;
				}
				cnt++;
				
				V2.clear();
				for(int i=0;i<V1.size();i++){
					if(V1[i]>1){
						V2.push_back(V1[i]-1);
					}
				}
				V2.push_back(V1.size());
			}
			
			
		}
		
		
	}
	
	return 0;
}
