#include <iostream>
#include <cstdio>
#include <map>
using namespace std;
const int N = 1010;
map <string,int> mp;
int n;
bool check (string str) {
int cnt1 = 0,cnt2 = 0,len = str.size ();
for (int i = 0;i < len;i++) {
if (str[i] == '.') cnt1 ++;
else if (str[i] == ':') cnt2 ++;
if (cnt2 == 1 && cnt1 < 3) return false;
if (!isdigit (str[i]) && str[i] != '.' && str[i] != ':') return false;
}
if (cnt2 != 1 && cnt1 != 3) return false;
int num[] = {-1,-1,-1,-1,-1};
int now = 0;
str[len] = '.';
for (int i = 0;i < len;i++) {
if (num[now] == -1 && !isdigit (str[i])) return false;
else if (num[now] == -1 && (str[i] == '0' && str[i+1] != '.' && str[i+1] != ':')) return false;
else if (!isdigit (str[i])) now++;
else if (num[now] == -1) num[now] = str[i]-'0';
else num[now] = num[now]*10+str[i]-'0';
if (num[now] > 65535) return false;
}
register bool tp1 = (0 <= num[0] && num[0] <= 255);
register bool tp2 = (0 <= num[1] && num[1] <= 255);
register bool tp3 = (0 <= num[2] && num[2] <= 255);
register bool tp4 = (0 <= num[3] && num[3] <= 255);
register bool tp5 = (0 <= num[4] && num[4] <= 65535);
return tp1 && tp2 && tp3 && tp4 && tp5;
}
int main () {
cin >> n;
for (int i = 1;i <= n;i++) {
string op,ad;
cin >> op >> ad;
if (!check (ad)) puts ("ERR");
else if (op[0] == 'S') {
if (mp.count (ad)) puts ("FAIL");
else {
mp[ad] = i;
puts ("OK");
}
}
else {
if (mp.count (ad)) cout << mp[ad] << endl;
else puts ("FAIL");
}
}
return 0;
}