#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct bign{
int len;
int d[1000];
bign()
{
len = 0;
memset(d,0,sizeof(d));
}
};
bign add(bign a, bign b)
{
int carry = 0;
bign c;
for(int i = 0; i < max(a.len,b.len); i++)
{
c.d[i] = (a.d[i] + b.d[i] + carry) % 10;
carry = (a.d[i] + b.d[i] + carry) / 10;
c.len++;
}
if(carry != 0)
c.d[c.len++] = carry;
return c;
}
bign con(bign a)
{
bign c;
for(int i = a.len; i >= 0; i--)
{
c.d[a.len-1-i] = a.d[i];
}
c.len = a.len;
return c;
}
bool judge(bign a)
{
for(int i = 0; i <= a.len/2; i++)
{
if(a.d[i] != a.d[a.len-1-i]) return false;
}
return true;
}
bign change(char a[])
{
bign c;
int len = strlen(a);
for(int i = len - 1; i >= 0; i--)
{
c.d[c.len++] = a[i] - '0';
}
return c;
}
void print(bign a)
{
for(int i = a.len - 1; i >= 0; i--)
{
printf("%d",a.d[i]);
}
printf("\n");
}
int main()
{
char s[1000];
int k;
scanf("%s %d",s,&k);
bign a = change(s);
if(judge(a))
{
print(a);
printf("0\n");
return 0;
}
int temp = 0;
while(temp < k)
{
if(judge(a))
break;
bign b,c;
b = con(a);
c = add(a,b);
a = c;
temp++;
}
print(a);
printf("%d\n",temp);
return 0;
}