INF = int(1e9)
n = int(input())
g = [[INF] * 52 for _ in range(52)]
for i in range(52):
g[i][i] = 0
for i in range(n):
a, b, c = map(str, input().split())
if 65 <= ord(a) <= 90:
aa = ord(a) - 65
else:
aa = ord(a) - 97 + 26
if 65 <= ord(c) <= 90:
cc = ord(c) - 65
else:
cc = ord(c) - 97 + 26
g[aa][cc] = 1
for i in range(52):
g[i][i] = 0
for k in range(52):
for i in range(52):
for j in range(52):
g[i][j] = min(g[i][j], g[i][k] + g[k][j])
ans = []
for i in range(52):
for j in range(52):
if g[i][j] != INF and g[i][j] != 0:
ans.append((i, j))
ans.sort()
print(len(ans))
for i, j in ans:
if 0 <= i < 26:
ii = i + 65
else:
ii = i + 97 - 26
if 0 <= j < 26:
jj = j + 65
else:
jj = j + 97 - 26
print(f"{chr(ii)} => {chr(jj)}")
아스키 변환과 플로이드 와샬 (모든 곳 -> 모든 곳)