파이썬에서 알파벳에 관련된 visited처리시에는 ord()를 적극 이용해야한다.
import sys
r,c = map(int, input().split())
lst = [list(map(str, sys.stdin.readline())) for _ in range(r)]
visited = [0] * 128
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
visited[ord(lst[0][0])] = 1
mx = 0
def dfs(x,y, count):
global mx
mx = max(count, mx)
for i in range(4):
nx = x+dx[i]
ny = y+dy[i]
if nx < 0 or ny < 0 or nx >= r or ny >= c:
continue
if visited[ord(lst[nx][ny])] == 0:
visited[ord(lst[nx][ny])] = 1
dfs(nx,ny, count+1)
visited[ord(lst[nx][ny])] = 0
dfs(0,0, 1)
print(mx)