#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define mp make_pair
#define si(x) int(x.size())
const int mod=1000000007,MAX=200005,INF=1<<30;

int main(){
    
    std::ifstream in("text.txt");
    std::cin.rdbuf(in.rdbuf());
    cin.tie(0);
    ios::sync_with_stdio(false);
    
    int N;cin>>N;
    string X="URDL";
    vector<vector<pair<int,int>>> S(4,vector<pair<int,int>>());
    for(int i=0;i<N;i++){
        int x,y;cin>>x>>y;
        char c;cin>>c;
        for(int j=0;j<4;j++){
            if(c==X[j]) S[j].push_back(mp(x,y));
        }
    }
    
    int ans=INF;
    
    for(int i=0;i<2;i++){
        if(i==0){
            sort(all(S[i]),[](auto a,auto b){
                if(a.fi==b.fi) return a.se<b.se;
                return a.fi<b.fi;
            });
            sort(all(S[i+2]),[](auto a,auto b){
                if(a.fi==b.fi) return a.se<b.se;
                return a.fi<b.fi;
            });
            
            int i1=0,i2=0;
            
            while(i1<si(S[i])&&i2<si(S[i+2])){
                auto a=S[i][i1],b=S[i+2][i2];
                if(a.fi==b.fi){
                    if(a.se<b.se) chmin(ans,(b.se-a.se));
                }
                
                if(a<b) i1++;
                else i2++;
            }
        }else{
            sort(all(S[i]),[](auto a,auto b){
                if(a.se==b.se) return a.fi<b.fi;
                return a.se<b.se;
            });
            sort(all(S[i+2]),[](auto a,auto b){
                if(a.se==b.se) return a.fi<b.fi;
                return a.se<b.se;
            });
            
            int i1=0,i2=0;
            
            while(i1<si(S[i])&&i2<si(S[i+2])){
                auto a=S[i][i1],b=S[i+2][i2];
                if(a.se==b.se){
                    if(a.fi<b.fi) chmin(ans,(b.fi-a.fi));
                }
                
                if(a.se<b.se||(a.se==b.se&&a.fi<b.fi)) i1++;
                else i2++;
            }
        }
    }
    
    for(int i=0;i<4;i++){
        if(i==0){
            sort(all(S[i]),[](auto a,auto b){
                if(a.fi+a.se==b.fi+b.se) return a.se<b.se;
                return a.fi+a.se<b.fi+b.se;
            });
            sort(all(S[(i+1)%4]),[](auto a,auto b){
                if(a.fi+a.se==b.fi+b.se) return a.se<b.se;
                return a.fi+a.se<b.fi+b.se;
            });
            
            int i1=0,i2=0;
            
            while(i1<si(S[i])&&i2<si(S[(i+1)%4])){
                auto a=S[i][i1],b=S[(i+1)%4][i2];
                if(a.fi+a.se==b.fi+b.se){
                    if(a.se<b.se) chmin(ans,(b.se-a.se)*2);
                }
                
                if(a.fi+a.se<b.fi+b.se||(a.fi+a.se==b.fi+b.se&&a.se<b.se)) i1++;
                else i2++;
            }
        }
        if(i==2){
            sort(all(S[i]),[](auto a,auto b){
                if(a.fi+a.se==b.fi+b.se) return a.fi<b.fi;
                return a.fi+a.se<b.fi+b.se;
            });
            sort(all(S[(i+1)%4]),[](auto a,auto b){
                if(a.fi+a.se==b.fi+b.se) return a.fi<b.fi;
                return a.fi+a.se<b.fi+b.se;
            });
            
            int i1=0,i2=0;
            
            while(i1<si(S[i])&&i2<si(S[(i+1)%4])){
                auto a=S[i][i1],b=S[(i+1)%4][i2];
                if(a.fi+a.se==b.fi+b.se){
                    if(a.fi<b.fi) chmin(ans,(b.fi-a.fi)*2);
                }
                
                if(a.fi+a.se<b.fi+b.se||(a.fi+a.se==b.fi+b.se&&a.fi<b.fi)) i1++;
                else i2++;
            }
        }
        if(i==1){
            sort(all(S[i]),[](auto a,auto b){
                if(a.fi-a.se==b.fi-b.se) return a.fi<b.fi;
                return a.fi-a.se<b.fi-b.se;
            });
            sort(all(S[(i+1)%4]),[](auto a,auto b){
                if(a.fi-a.se==b.fi-b.se) return a.fi<b.fi;
                return a.fi-a.se<b.fi-b.se;
            });
            
            int i1=0,i2=0;
            
            while(i1<si(S[i])&&i2<si(S[(i+1)%4])){
                auto a=S[i][i1],b=S[(i+1)%4][i2];
                if(a.fi-a.se==b.fi-b.se){
                    if(a.fi<b.fi) chmin(ans,(b.fi-a.fi)*2);
                }
                
                if(a.fi-a.se<b.fi-b.se||(a.fi-a.se==b.fi-b.se&&a.fi<b.fi)) i1++;
                else i2++;
            }
        }
        if(i==3){
            sort(all(S[i]),[](auto a,auto b){
                if(a.fi-a.se==b.fi-b.se) return a.fi>b.fi;
                return a.fi-a.se<b.fi-b.se;
            });
            sort(all(S[(i+1)%4]),[](auto a,auto b){
                if(a.fi-a.se==b.fi-b.se) return a.fi>b.fi;
                return a.fi-a.se<b.fi-b.se;
            });
            
            int i1=0,i2=0;
            
            while(i1<si(S[i])&&i2<si(S[(i+1)%4])){
                auto a=S[i][i1],b=S[(i+1)%4][i2];
                if(a.fi-a.se==b.fi-b.se){
                    if(a.fi>b.fi) chmin(ans,(a.fi-b.fi)*2);
                }
                
                if(a.fi-a.se<b.fi-b.se||(a.fi-a.se==b.fi-b.se&&a.fi>b.fi)) i1++;
                else i2++;
            }
        }
    }
    
    if(ans==INF) cout<<"SAFE\n";
    else cout<<ans*5<<endl;
}





Measured memory_bytes: 5816