✅ 정답 공개
s=input().strip()
n=len(s)
is_pal=[[False]*n for _ in range(n)]
for i in range(n): is_pal[i][i]=True
for l in range(2,n+1):
for i in range(n-l+1):
j=i+l-1
if s[i]==s[j]: is_pal[i][j]=(l==2) or is_pal[i+1][j-1]
dp=[float('inf')]*n; cut=[0]*n
for i in range(n):
if is_pal[0][i]: dp[i]=0; cut[i]=-1
else:
for j in range(1,i+1):
if is_pal[j][i] and dp[j-1]+1<dp[i]:
dp[i]=dp[j-1]+1; cut[i]=j
parts=[]; end=n-1
while end>=0:
if cut[end]==-1: parts.append(s[0:end+1]); break
parts.append(s[cut[end]:end+1]); end=cut[end]-1
print(dp[n-1])
print('|'.join(parts[::-1]))