#define N 1000
int R[10][10];
void Print(int n,int m)
{
int t=R[n][m];
if(t==0)
printf("->%d ",m);
else
{
Print(n,t);
Print(t,m);
}
}
int main()
{
double a[10][10],d[10][10];
int i,j,k;
for(i=1;i<=9;++i)
{
for(j=1;j<=9;j++)
{
if(i==j)
{
a[i][j]=0;
R[i][j]=i;
}
else
{
a[i][j]=N;
R[i][j]=0;
}
}
}
a[1][2]=a[2][1]=4.5;
a[1][4]=a[4][1]=4.5;
a[2][3]=a[3][2]=4.5;
a[2][5]=a[5][2]=4;
a[3][6]=a[6][3]=4.5;
a[4][5]=a[5][4]=2;
a[4][7]=a[7][4]=4.5;
a[5][6]=a[6][5]=2;
a[5][8]=a[8][5]=4;
a[6][9]=a[9][6]=4.5;
a[7][8]=a[8][7]=4.5;
a[8][9]=a[9][8]=4.5;
for(i=1;i<=9;++i)
{
for(j=1;j<=9;j++)
d[i][j]=a[i][j];
}
for(k=1;k<=9;k++)
{
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
if(d[i][k]+d[k][j]<d[i][j])
{
d[i][j]=d[i][k]+d[k][j];
R[i][j]=k;
}
}
}
int n,m;
scanf("%d%d",&n,&m);
printf("%lf\n",d[n][m]);
printf("%d",n);
Print(n,m);
return 0;
}