#include<iostream>
#include<queue>
using namespace std;
int n,m,dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}},s;
char room[100][100];
bool vis[100][100];
struct node{
int x,y;
char color;
};
void bfs(int x,int y){
queue<node>q;
q.push({x,y,room[x][y]});
vis[x][y]=1;
while(!q.empty()){
node f=q.front();
vis[f.x][f.y]=1;
q.pop();
for(int i=0;i<4;i++){
int nx=f.x+dir[i][0],ny=f.y+dir[i][1];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&room[nx][ny]==f.color&&!vis[nx][ny]){
vis[nx][ny]=1;
q.push({nx,ny,f.color});
}
}
}
s++;
}
int main(){
char c;
cin>>n>>m>>c;
for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>room[i][j];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(room[i][j]==c)
for(int k=0;k<4;k++){
int x=i+dir[k][0],y=j+dir[k][1];
if(x>=0&&x<n&&y>=0&&y<m
&&room[x][y]!=c&&room[x][y]!='.'&&!vis[x][y]){
bfs(x,y);
}
}
cout<<s<<endl;
return 0;
}