#define _CRT_SECURE_NO_WARNINGS 1
//
// 输入一个数
// 1.求出它是几位数
// 2.分别输出它的每一位
// 3.逆序输出它
// 如,
// 输入:123
// 输出:3位 1 2 3 321
//
#include <stdio.h>
#include <math.h>

int Num_word(int a)
{
	//1个数最少有1位,所以i定义为1
	int i = 1;
	while (a /= 10)
	{
		i++;
	}
	return i;
}

void Print_num(int a, int count)
{
	int i = 0;

	for (i = count - 1; i >= 0; i--)
	{
		//打印最高位
		printf("%d ", a / (int)pow(10, i));

		//去掉最高位
		a %= (int)pow(10, i);
	}
}

void Reverse_num(int a, int count)
{
	int i = 0;

	for (i = 0; i < count; i++)
	{
		//打印最低位
		printf("%d", a % 10);

		//去掉最低位
		a /= 10;
	}
}
int main()
{
	int a = 0;
	int count = 0;

	scanf("%d", &a);

	//求是几位数
	count = Num_word(a);
	printf("这个数字有%d位\n", count);
	
	//打印它的每一位
	Print_num(a, count);

	printf("\n");

	//逆序输出
	Reverse_num(a, count);

	return 0;
}