from collections import deque h,w,m=map(int,input().split()) s=[list(input()) for _ in range(h)] for i in range(h): for j in range(w): if s[i][j]=='S': st=[i,j] elif s[i][j]=="G": go=[i,j] inf=10**18 dp=[[[inf]*11 for _ in range(w)] for _ in range(h)] dp[st[0]][st[1]][0]=0 s[st[0]][st[1]]="." s[go[0]][go[1]]="." dq=deque([(st[0],st[1],0)]) dir=[0,1,0,-1] num=[str(i) for i in range(10)] while dq: x,y,k=dq.popleft() now=dp[x][y][k] for i in range(4): p,q=x+dir[i],y+dir[i^1] if 0<=pnow+1: dp[p][q][k]=now+1 dq.append((p,q,k)) elif s[p][q] in num: v=int(s[p][q]) if dp[p][q][v]>now+1: dp[p][q][v]=now+1 dq.append((p,q,v)) else: if ord(s[p][q])-ord('a')+1==k: if dp[p][q][k]>now+1: dp[p][q][k]=now+1 dq.append((p,q,k)) ans=min(dp[go[0]][go[1]]) if ans==inf: print(-1) else: print(ans)