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

#define rep(i, n) for (int i = 0; i < (n); i ++) 

vector<pair<map<int, int>, int>> p(52);

int get_value(string x) {
        if ('0' <= x[0] && x[0] <= '9') {
                return stoi(x);
        }
        if (p[x[0] + (x[0] <= 'Z' ? -'A' : 26 - 'a')].second == 0) return -1;
        string in = x.substr(2, x.size() - 3);
        int index = get_value(in);
        if (index == -1) return -1;
        if (p[x[0] + (x[0] <= 'Z' ? -'A' : 26 - 'a')].second - 1 < index) return -1;
        auto it = p[x[0] + (x[0] <= 'Z' ? -'A' : 26 - 'a')].first.find(index);
        if (it == p[x[0] + (x[0] <= 'Z' ? -'A' : 26 - 'a')].first.end()) return -1;
        return p[x[0] + (x[0] <= 'Z' ? -'A' : 26 - 'a')].first[index];
}

int main() {
        bool end = false;
        while (true) {
                int ans = 0, cnt = 0;
                p.clear();
                p.resize(52);
                for (int i = 0; i < 52; i ++) p[i].second = 0;
                bool found = false;
                while (true) {
                        cnt ++;
                        string s;
                        cin >> s;
                        if (s == "." && end) { 
                                goto fin;
                        }
                        if (s == ".") { 
                                break;
                        }
                        end = false;
                        bool eq = false;
                        for (int i = 0; i < s.size(); i ++) if (s[i] == '=') eq = true;
                        if (!eq) {
                                char alph = s[0];
                                s = s.substr(2, s.size() - 3);
                                p[alph + (alph <= 'Z' ? -'A' : 26 - 'a')].second = stoi(s);
                        } else {
                                //cerr << "eq" << endl;
                                string left, right;
                                int sp = 0;
                                while (s[sp] != '=') sp ++;
                                left = s.substr(0, sp);
                                right = s.substr(sp + 1);
                                //cerr << left << ' ' << right << endl;
                                int res = get_value(right);
                                //cerr << "res = " << res << endl;
                                int index = get_value(left.substr(2, left.size() - 3)); 
                                //cerr << res << ' ' << index << endl;
                                if ((res == -1 || index == -1) && !found) {
                                        //cerr << "found" << endl;
                                        ans = cnt;
                                        found = true;
                                }
                                if (p[left[0] + (left[0] <= 'Z' ? -'A' : 26 - 'a')].second - 1 < index && !found) {
                                        ans = cnt;
                                        found = true;
                                }
                                p[left[0] + (left[0] <= 'Z' ? -'A' : 26 - 'a')].first[index] = res;
                        }
                }
                cout << ans << endl;
                end = true;
        }
        fin:;
        return 0;
}

Measured memory_bytes: 3212