#include using namespace std; int main(){ int h,w,m; cin>>h>>w>>m; string s[h]; for(int i=0;i>s[i]; vector>> d(h,vector>(w,vector(m+1,-1))); int si,sj,gi,gj; for(int i=0;i> Q; Q.push({si,sj,0}); int dx[]{1,0,-1,0},dy[]{0,1,0,-1}; while(!Q.empty()){ auto [i,j,k]=Q.front(); Q.pop(); for(int l=0;l<4;l++){ int ni=i+dx[l],nj=j+dy[l]; if(ni<0||ni>=h||nj<0||nj>=w) continue; if(s[ni][nj]=='#') continue; int nk=k; if('1'<=s[ni][nj]&&s[ni][nj]<='9'){ nk=s[ni][nj]-'0'; } if(d[ni][nj][nk]!=-1) continue; if('a'<=s[ni][nj]&&s[ni][nj]<='i'){ if(s[ni][nj]-'a'+1==nk){ d[ni][nj][nk]=d[i][j][k]+1; Q.push({ni,nj,nk}); } } else{ d[ni][nj][nk]=d[i][j][k]+1; Q.push({ni,nj,nk}); } } } int ans=2e9; for(int i=0;i<=m;i++) if(d[gi][gj][i]!=-1) ans=min(ans,d[gi][gj][i]); if(ans>1e9) ans=-1; cout<