#include<iostream>
#include<sstream>//stringstream头文件 
#include<map>//map头文件 
typedef long long ll;//也可以不开long long 
using namespace std;
bool f(string s){
	ll a,b,c,d,e;
	if(sscanf(s.c_str(),"%lld.%lld.%lld.%lld:%lld",&a,&b,&c,&d,&e)!=5){//输入的数字不符合要求,不是五个数 
		return 0;
	}
	if(a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255||e<0||e>65535){//输入数据范围不符合要求 
		return 0;
	}
	stringstream ss;//stringstream方便进出字符
	ss<<a<<'.'<<b<<'.'<<c<<'.'<<d<<':'<<e;//将输入中的数字组合成字符串流 
	if(ss.str()!=s){//转换成字符串比较 
		return 0;
	}
	return 1;
}
map<string,ll>m;//定义了一个用string作为索引,并拥有相关联的指向long long的指针.
ll n;
string op,ad;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>op>>ad;
		if(!f(ad)){//不符合要求 
			cout<<"ERR";
			endl(cout);
			continue;//还有下一个,所以要continue而非break 
		}
		if(op[0]=='S'){//Server
			if(m[ad]){//1or0,所以直接用 
				cout<<"FAIL";
				endl(cout);
			}else{
				m[ad]=i;
				cout<<"OK";
				endl(cout);
			}
		}else{
			if(!m.count(ad)){//解释一下count函数: 返回指定元素出现的次数, (但是因为key值不会重复,所以只能是1 or 0) 
				cout<<"FAIL";//没出现 
				endl(cout);
			}else{
				cout<<m[ad];//输出 
				endl(cout);
			}
		}
	}
	return 0;
}

/**************************************************************
	Problem: 2403
	User: admin
	Language: C++
	Result: Accepted
	Time:689 ms
	Memory:2276 kb
****************************************************************/