Go: package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
	"strconv"
)

var scanner = bufio.NewScanner(os.Stdin)

func nextString() string {
	scanner.Scan()
	return scanner.Text()
}

func nextInt() (int, error) {
	return strconv.Atoi(nextString())

}

func main() {
	scanner.Split(bufio.ScanWords)

	for {
		a, err := nextInt()
		if err != nil {
			break
		}
		b, _ := nextInt()

		s := a + b
		nDigits := int(math.Log10(float64(s))) + 1
		fmt.Println(nDigits)
	}
}

C++: #include<iostream>
#include<math.h>
#include<stdio.h>
using namespace std;

int stringers_number(int a)
{
	return int(log10(a) + 1);
}

int extract_the_number(char *n1,char *n2)
{
	int data_size1=0;
	int data_size2=0;
	for (data_size1=0;!(*(n1+data_size1)=='\0');data_size1++){}
	for (data_size2=0;!(*(n2+data_size2)=='\0');data_size2++){}
	/*int data_size1 = sizeof(n1) / sizeof(n1[0]);
	int data_size2 = sizeof(n2) / sizeof(n2[0]);*/
	/*for (i=0;i<=data_size-1;i++)
		if (a[i] == ' ')
			break; */
	int a1=0;
	int j=0;
	for (j=0;j<=data_size1 - 1;j++){
		int j_keta = int(*(n1+(sizeof n1[0])*j)) - 48;
		a1 = a1 + (pow(10,(data_size1 - j - 1))) * j_keta;
	}
	int a2=0;
	int k=0;
	for (k=0;k<=data_size2 - 1;k++){
		int k_keta = int(*(n2+(sizeof n2[0])*k)) - 48;
		a2 = a2 + (pow(10,(data_size2 - k - 1)))*k_keta;
	}
	return a1+a2;
}

int main()	
{
	char n1[100];
	char n2[100];
	while(cin >> n1 && cin >> n2){
		/*cin >> n1;
		cin >> n2;*/
		cout << stringers_number(extract_the_number(n1,n2)) << endl;
	}
	return 0;
}

C++: #include<iostream>
using namespace std;

int main(){

	int a[2];
	cin >> a[0] >> a[1];
	int check=a[0]+a[1],retval=1;
	while(check>=10){
		check/=10;
		retval++;
	}
	cout << retval << endl;

    return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
  int a,b;
  while (cin >> a >> b) {
    int sum = a+b;
    int count = 0;
    while (1) {
      ++count;
      sum /= 10;
      if (sum == 0) {
	cout << count << endl;
	break;
      }
    }
  }
  return 0;
}

C++: #include <stdio.h>
#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;

int main() {
	int sum;
	int x,y;
	int kekka;
	
	while(1){
		cin >> x >> y;
		if ( cin.eof() ) { break; }
		sum = x + y;
		kekka = (double)log10((double) sum)+1;
		cout << kekka << endl;
	}
	
    return 0;
}

C++: #include<iostream>
#include<utility>
#include<climits>
using namespace std;

int main()
{
	int a, b;

	int sum = a + b;

	int keta;

	if (sum / 1000000 >= 1) keta = 7; 
	else if (sum / 100000 >= 1) keta = 6; 
	else if (sum / 10000 >= 1) keta = 5; 
	else if (sum / 1000 >= 1) keta = 4; 
	else if (sum / 100 >= 1) keta = 3; 
	else if (sum / 10 >= 1) keta = 2;
	else keta = 1;

	cout << keta << endl;

	return 0;
}

C++: #include <stdio.h>

int digit( x );

int main(){
  int a, b;
  int x;

  while( scanf("%d %d", &a, &b) != EOF){
    x = digit( a+b );
    printf("%d\n", x);
  }
  return 0;
}

int digit( x ){
  int c=1;
  while( (x / 10) != 0){
    x /= 10;
    c++;
  }
  return c;
}

C++: #include <iostream>

using namespace std;

int main()
{
	int i,j;
	int a[200], b[200];
	int digit[200] = { 0 };

	for ( i = 0; i < 200; i++){
		if(!(cin >> a[i] >> b[i])){
			break;
		}

		int sum = a[i] + b[i];
		while (1){
			digit[i]++;
			sum /= 10;
			if (sum == 0){
				break;
			}
		}
	}

	for (j = 0; j < i; j++){
		cout << digit[j] << endl;
	}

	return 0;
}

C++: #include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;

int main(){
	while(!cin.eof()){
		int a,b;
		cin>>a>>b;
		int c = a+b;
		int cnt = 0;
		do
		{
			cnt++;
			c /= 10;
		}while(c != 0);
		cout << cnt << endl;
	}
	return 0;
}

C++: #include <iostream>
#include <cmath>
int main() {
 int a,b;
 while (std::cin >> a >> b)
  std::cout << log10(a+b) << std::endl;
 return 0;
}

C++: #include <iostream>
using namespace std;

int main() {
    int a, b;
    while(cin >> a >> b) {
        int a, b;
        cin >> a >> b;
        a += b;
        int ans;
        for(ans=0; a != 0; ++ans) {
            a /= 10;
        }
        cout << ans << endl;
    }
}

C++: #include <iostream>
using namespace std;

int main(){
	int a, b, ans;
	while ( cin >> a >> b ) {
		a += b;
		ans = 0;
		while( a > 0 , ans++ , a /= 10 );
		cout << ans << endl;
	}
}

C++: #include <bits/stdc++.h>
using namespace std;

int main() {
  int a, b, cnt = 0;
  while (cin >> a >> b){
    int cnt = 0, n = a + b;
    while (n) {
      cnt++;
      n /= 10;
    }
    cout << cnt << endl;
  }
  return 0;
}

C++: #include<bits/stdc++.h>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cctype>

#include<cmath>
#include<iostream>
#include<fstream>

#include<string>
#include<vector>
#include<queue>
#include<map>
#include<algorithm>
#include<set>
#include<sstream>
#include<stack>

using namespace std;

int main()
{
    long long int n,i,j,a,b,aa,bb,digit,digit1,ck=0,dk=0;
    while(scanf("%lld %lld", &a, &b)==2){
     aa = a;
    bb = b;
    while(a){
        digit = a%10;
        a/=10;
        if(digit==0) continue;
        else{
            if(aa%(digit)==0) ck++;
        }
    }

    while(b){
        digit1 = b%10;
        b/=10;
        if(digit1==0) continue;
        else{
            if(bb%(digit1)==0) dk++;
        }
    }
    cout<<ck+dk<<endl;
    ck=0,dk=0;
    }
}

C++: #include <bits/stdc++.h>

using namespace std;

#define all(c) (c).begin(), (c).end()
#define rep(i, n) for (int i = 0; i < (int)(n); i++)

int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};

int main() {
    int a, b;
    while (cin >> a >> b) {
        if (a == 0 && b == 0) {
            cout << "1" << endl;
            continue;
        }
        int s = a + b;
        int ans = log(1.0 * s) / log(10.0) + 1;
        cout << ans << endl;
    }

    return 0;
}

C++: #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
         int n,m,c=0;
        while(scanf("%d %d",&n,&m)!=EOF)
        {
            int sum=n+m;
            if(sum==0){
                c++;
            }
            while(sum!=0){
                sum=sum/10;
                c++;
            }


        }
         cout<<c<<endl;
    }

C++: #include <iostream>
using namespace std;

int main(){
	int a,b,c;
	int ans;
	bool flg;
	int cnt=-1;
	
	while(cin>>a>>b){
		cnt++;flg=false;
		//-----test-----
		switch(cnt){
		case 0:
			if(b!=0) flg=true; 
			break;
		}
		
		if(flg) break;
		
		//--------------
		c=a+b;
		ans=1;
		while(10<=c){
			c/=10;
			ans++;
		}
		cout<<ans<<endl;
	}
	
	return 0;

C++: #define _CRT_SECURE_NO_WARNINGS
#include<iostream>
//#include<algorithm>
//#include<cmath>
using namespace std;
int main() {
	char bff[10];
	int a, b,c;
	while (cin >> a >> b)
		c = sprintf(bff, "%d", a + b),
		cout << c << endl;
	return 0;
}

C++: def get_input():
    while True:
        try:
            yield ''.join(raw_input())
        except EOFError:
            break

if __name__ == '__main__':
    a = list(get_input())

for n in a:
    inl=n.split()
    num=inl[0]+inl[1]
    l=list(num)
    time=0
    for i in l:
        time+=1
    print time

C++: #include<stdio.h>
#include<math.h>
int main(){
	int a,b,c,count;
	while(scanf("%d %d",&a,&b)!=EOF){
		count=0;
		c=a+b;
		//printf("%d %d\n",a,b);
		while(c){
			c=c/10;
			count++;
		}
		printf("%d\n",count);
	}
	return 0;
}

C++: #include <iostream>
#include <math.h>
#include <stdio.h>
#include <string>
#include <string.h>
#include <algorithm>
#include <cmath>
#include <limits>
#include <sstream>

using namespace std;

int main (void)
{
	for (int u = 0; u < 200; u++)
	{
		long long n = 0,m = 0;

		cin >> n >> m;

		ostringstream p;
		string pp;
		p << n + m;

		pp = p.str();
		
		cout << pp.size() << endl;
	}
}

C++: #include <iostream>
using namespace std;

int main(){
	int a,b,c;
	int ans;
	int cnt=-1;
	
	while(cin>>a>>b){
		cnt++;
		//-----test-----
		if(a<2000) break;
		
		//--------------
		c=a+b;
		ans=1;
		while(10<=c){
			c/=10;
			ans++;
		}
		cout<<ans<<endl;
	}
	
	return 0;
}