dij=[[0,1],[1,0],[0,-1],[-1,0]] dij2=[[0,2],[2,0],[0,-2],[-2,0]] def nin(): return list(map(int,input().split())) import collections h,w=nin() s=[list(input()) for i in range(h)] hh=2*h-1 ww=2*w-1 ss=gg=-1 black=set() d=[-1]*(hh*ww) for i in range(h): for j in range(w): if s[i][j]=="S": ss=2*i*ww+2*j s[i][j]="." elif s[i][j]=="G": gg=2*i*ww+2*j s[i][j]="." elif s[i][j]=="#": d[2*i*ww+2*j]=-2 task=collections.deque()#maxlen=hh*ww) task.append(ss) d[ss]=0 while len(task)>0: i=task.popleft() rin=[] ii,jj=i//ww,i%ww for di,dj in dij: if 0<=ii+di