/*
TASK: future
LANG: C++
*/
#include<iostream>
#include<string>
using namespace std;
string s,s1;
int n,a[256],b[256],sa,sb,sub[256],ssub,mult10[256],mult1[256],sm1,sm10,res[256],sres,st;
int last[16],br[16],maxx,sum,min_poz=1024,sol;

int bigger()
{
 if(sa>sb) return 1;
 if(sa<sb) return 2;
 for(int i=0;i<sa;i++)
  {
   if(a[i]>b[i]) return 1;
   if(a[i]<b[i]) return 2;
 }
 return 1;  // ravni sa o.O
}

void sub1(int x[],int y[],int xs, int ys)   // a-b
{
 int j=ys-1;
 for(int i=xs-1;i>=0;i--)
  {
   if(j>=0)
    {
     x[i]=x[i]-y[j];
    }
   if(x[i]<0) { x[i]+=10; x[i-1]--; }
   j--;
  }    
 int k=0;
 while(x[k]==0) k++;
 sub[0]=0;
 sub[1]=0;
 ssub=2;
 while(k<xs) { sub[ssub++]=x[k++]; }
}

int mult(int wh[],int k)   //a*b
{
 int ost=0;
 for(int i=ssub-1;i>=2;i--) 
  {
   wh[i]=sub[i]*k+ost;
   ost=wh[i]/10;
   wh[i]%=10;       
  }
 wh[1]=ost;
 return ssub;
}

void plas()
{
 int j=sm1-1;
 for(int i=sm10-1;i>=1;i--)
  {
   if(j>=1) res[i]+=mult10[i]+mult1[j];       
    else res[i]+=mult10[i];
   
   res[i-1]+=res[i]/10;
   res[i]%=10;
   j--;
  }
 int x=0;     
 while(res[x]==0) x++;
 st=x;
} 

int main()
{
 getline(cin,s);
 sa=s.size();
 for(int i=0;i<sa;i++)
  a[i]=int(s[i]-'0'); 
 getline(cin,s1);
 sb=s1.size();
 for(int i=0;i<sb;i++)
  b[i]=int(s1[i]-'0'); 

 scanf("%d",&n);

 if(bigger()==1) sub1(a,b,sa,sb);
  else sub1(b,a,sb,sa);

 sm1 = mult(mult1,n%10);
 sm10 = mult(mult10,n/10) + 1; // *10 

 plas();
 int key=0;
 for(int i=st;i<sm10;i++)
  { key=1;
   printf("%d",res[i]);
   last[res[i]]=i;
   br[res[i]]++;
   sum+=res[i];
   if(br[res[i]]>maxx)maxx=br[res[i]];
  }  
 if(key==0) {printf("0\n0\n"); return 0;} 
 printf("\n");
 for(int i=1;i<10;i++) 
  {
   if(br[i]==maxx)
    if(sum%i==0)
     if(min_poz>last[i])
      sol=i;
  }    
 printf("%d\n",sol);
 return 0;    
}
