#include <bits/stdc++.h>
using namespace std;

#define INF_LL (int64)1e18
#define INF (int32)1e9
#define REP(i, n) for(int64 i = 0;i < (n);i++)
#define FOR(i, a, b) for(int64 i = (a);i < (b);i++)
#define all(x) x.begin(),x.end()
#define fs first
#define sc second

using int32 = int_fast32_t;
using uint32 = uint_fast32_t;
using int64 = int_fast64_t;
using uint64 = uint_fast64_t;
using PII = pair<int32, int32>;
using PLL = pair<int64, int64>;

const double eps = 1e-10;

template<typename A, typename B>inline void chmin(A &a, B b){if(a > b) a = b;}
template<typename A, typename B>inline void chmax(A &a, B b){if(a < b) a = b;}

map<char, int64> sz;
map<pair<char, int64>, int64> arr;
map<pair<char, int64>, bool> valid;

void prog(vector<string>& s, int32 &l, int32& p);
void dec(vector<string>& s, int32 &l, int32& p);
void ass(vector<string>& s, int32 &l, int32& p);
int64 exp(vector<string>& s, int32 &l, int32& p);
int64 num(vector<string>& s, int32 &l, int32& p);


int64 res;

void prog(vector<string>& s, int32& l, int32 &p){
	while(l < s.size()){
		if(s[l].find('=') == string::npos){
			dec(s, l, p);
		}else{
			ass(s, l, p);
		}
	}
}

void dec(vector<string>& s, int32& l, int32& p){
	char c = s[l][p++];
	p++;
	int64 size = num(s, l, p);
	p++;
	sz[c] = size;
	l++;
	p = 0;
}

void ass(vector<string>& s, int32& l, int32& p){
	char c = s[l][p++];
	p++;
	int64 idx = exp(s, l, p);
	p+=2;
	int64 r = exp(s, l, p);
	if(idx >= sz[c] && res == 0)
		res = l+1;
	valid[make_pair(c, idx)] = 1;
	arr[make_pair(c, idx)] = r;
	l++;
	p = 0;
}

int64 exp(vector<string>&s, int32 &l, int32& p){
	int64 ret = 0;
	if(isalpha(s[l][p])){
		char c = s[l][p++];
		p++;
		int64 idx = exp(s, l, p);
		p++;
		if((idx >= sz[c] || !valid[make_pair(c, idx)]) && res == 0)
			res = l+1;
		else
			ret = arr[make_pair(c, idx)];
	}else{
		ret = num(s, l, p);
	}
	return ret;
}

int64 num(vector<string>& s, int32& l, int32& p){
	int64 ret = 0;
	while(p < s[l].size() && isdigit(s[l][p])){
		ret = ret*10+s[l][p]-'0';
		p++;
	}
	return ret;
}

int main(void){
	while(1){
		vector<string> s;
		string t;
		while(cin >> t && t != "."){
			s.push_back(t);
		}
		if(s.size() == 0) break;
		sz = map<char, int64>();
		arr = map<pair<char, int64>, int64>();
		valid = map<pair<char, int64>, bool>();
		int32 l = 0, p = 0;
		res = 0;
		prog(s, l, p);
		cout << res << endl;
	}
}
