# 迷宫(91%)
n = int(input().strip())
a = []
label = -1
for i in range(n):
    a.append(list(input().strip()))
visited = [[0] * n for i in range(n)]
dirs = [(-1,0),(1,0),(0,-1),(0,1)]
for i in range(n):
    for j in range(n):
        if a[i][j] == 'S':
            visited[i][j] = 1
            queue = [(i,j,0)]
            while queue:
                tmp = queue.pop(0)
                for t in dirs:
                    i_n = (tmp[0] + t[0])%n
                    j_n = (tmp[1] + t[1])%n
                    if visited[i_n][j_n] == 0 and a[i_n][j_n] != '#':
                        visited[i_n][j_n] = 1
                        queue.append((i_n,j_n,tmp[2]+1))
                        if a[i_n][j_n]=='E':
                            label = tmp[2]+1
                            break
                if label!=-1:
                    break
print(label)

# 字符串(100%)
s = list(input().strip())
stack = []
se = set([')',"<"])
for i in range(len(s)):
    if s[i] not in se:
        stack.append(s[i])
    elif s[i]==')':
        tmp = stack.pop(-1)
        while tmp != "(":
            tmp = stack.pop(-1)
    else:
        if not stack:
            continue
        if stack[-1]=='(':
            continue
        else:
            stack.pop(-1)
print(''.join(stack))

# 宝物,O(n2), 超时,9%?直接print(3) 18%???
from operator import itemgetter
n = int(input().strip())
a = []
for i in range(n):
    a.append(list(map(int, input().strip().split())))
a.sort(key=itemgetter(0))
dp = [1]*n
max_s = 1
for i in range(len(a)):
    maxm = 1
    for j in range(i):
        if a[i][1] >= a[j][1]:
            tmp = dp[j] + 1
        else:
            tmp = dp[j]
        if tmp > maxm:
            maxm = tmp
    dp[i] = maxm
    if dp[i] > max_s:
        max_s = dp[i]
print(max_s)