import sys input = sys.stdin.readline from collections import deque H,W,M=map(int,input().split()) MAP=[input().strip() for i in range(H)] DP=[[[1<<60]*W for i in range(H)] for j in range(10)] Q=deque() for i in range(H): for j in range(W): if MAP[i][j]=="S": DP[0][i][j]=0 Q.append((0,i,j)) while Q: #print(Q) kk,x,y=Q.popleft() now=DP[kk][x][y] for z,w in [(x+1,y),(x-1,y),(x,y+1),(x,y-1)]: if 0<=znow+1: DP[key][z][w]=now+1 Q.append((key,z,w)) elif 97<=ord(MAP[z][w])<=122: key=ord(MAP[z][w])-96 if kk==key: if DP[key][z][w]>now+1: DP[key][z][w]=now+1 Q.append((key,z,w)) else: if DP[kk][z][w]>now+1: DP[kk][z][w]=now+1 Q.append((kk,z,w)) ANS=1<<60 for i in range(H): for j in range(W): if MAP[i][j]=="G": for kk in range(10): ANS=min(ANS,DP[kk][i][j]) if ANS>10**6: print(-1) else: print(ANS)