Go: package main

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

func sliceAtoi(sa []string) ([]int, error) {
	si := make([]int, 0, len(sa))
	for _, a := range sa {
		i, err := strconv.Atoi(a)
		if err != nil {
			return si, err
		}
		si = append(si, i)
	}
	return si, nil
}

func getDigits(ary []int) (digits int) {
	sum := 0
	for _, v := range ary {
		sum += v
	}

	for sum != 0 {
		sum /= 10
		digits++
	}
	return
}

func getsTwoNumAsArray() (nums [][]int) {
	scanner := bufio.NewScanner(os.Stdin)

	for scanner.Scan() {
		str := scanner.Text()
		if str == "" {
			break
		}

		ary, _ := sliceAtoi(strings.Split(str, " "))
		nums = append(nums, ary)
	}

	return
}

func main() {
	ary := getsTwoNumAsArray()

	for _, v := range ary {
		fmt.Println(getDigits(v))
	}
}

C++: #include<complex>
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cmath>
#include<vector>
#include<map>
#include<sstream>
#include<ctime>
#include<cstdio>
#include<cstdlib>
#include<cassert>
#include<deque>
#include<queue>
#include<climits>
#include<list>
#include<stack>
#include<fstream>
#include<ctime>
#define all(n) n.begin(),n.end()
#define REP(i,s,n) for(int i=s;i<n;i++)
#define rep(i,n) REP(i,0,n)
#define insert(a,b,c,d) PP(P(a,b),P(c,d))
#define F first
#define S second
#define pb push_back
#define INF (1<<27)
#define EPS 1e-10
#define equals(a,b) (fabs((a)-(b)) < EPS)

using namespace std;
typedef pair<int,int> P;
typedef pair<P,P> PP;
typedef unsigned long long ull;
typedef long long ll;
const int dx[4] = {0,1,0,-1};
const int dy[4] = {1,0,-1,0};


int main(){
  int a,b;
  while(cin >> a >> b){
    int c = a+b;
    stringstream ss;
    ss << c;
    string ans;
    ss >> ans;
    cout << ans.length() << endl;
  }

  /* 
  ofstream ofs("tes");
  ofs << "script -k test.log" << endl;
  system("chmod 755 tes");
  system("at -m -f tes 2:35");
  

  
  system("at exit 2:40");
  system("at cat test.log 2:41");
  */

ofstream ofs("test.t");
ofs << "testetete" << endl;
  cerr << system("emacs test.t") << endl;


return 0;
}

C++: #include <iostream>

using namespace std;

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


}

C++: #include<iostream>
using namespace std;
 
int main(){
    int a, b, sum, digit;
    while(cin >> a >> b){
        sum = a + b;
        digit = 0;
        while(sum){
            sum = sum / 10;
            digit++;
        }
        cout << digit << endl;
    };
    return 0;
}

C++: #include<stdio.h>
#include<math.h>

int main(void){

	int a,b;


	scanf("%d %d",&a,&b);

	if(a+b == 0)
		printf("%d\n",1);
	else
		printf("%d\n",(int)log10((a+b)*1.0)+1);

	return 0;

}

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

int main(void)
{
   int a, b, keta;

   while(cin >> a >> b){
      a+=b;
      keta=1;
      while((a/=10)!=0) keta++;
      cout << keta << endl;
   }
   return 0;
}

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

int main(){
    long long a,b;
    while(cin >> a >> b){
    long long sum = a + b;
    string str = to_string(sum);
    cout << str.length()<<endl;}

    return 0;
}

C++: #include <stdio.h>

int main()
{
	int a =0;
	int b = 0; 
	int ans = 0;
	while(scanf("%d,%d",a,b)!=EOF)
	{
		a += b;
		while(1)
		{
			a /= 10;
			ans++;
			if(a = 0)
			{
				printf("%d",ans);
				break;
			}
		}
	}
	return 0;
}

C++: #include <iostream>
using namespace std;
int main(){
	int a,b,c=1,i;
	while(cin>>a>>b){
	for(i=0;i<8;i++){
		c*=10;
		if(a<b){
			cout<<i<<endl;
			break;
		  }
		}
	cout<<i<<endl;
	}
	return 0;
	}

C++: #include<iostream>
#include<cmath>

int main(){
	int a,b;
	while (std::cin >> a >> b)
		std::cout << static_cast<int>(log10(a + b)) + 1 << std::endl;
	return 0;
}

C++: #include <cstdio>
using namespace std;
int main(){
	long a,b,i;
	while(scanf("%ld %ld",&a,&b)!=EOF){
		i=1;a+=b;b=1;
		while(b<=a){i++;b*=10;}
		printf("%ld\n",i-1);
	}
	return 0;
}

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

int main(){
	int a=0,cnt=0,b=0;
	while(scanf("%d %d",&a,&b)!=EOF){
		a+=b;
		while(a>0){
			a/=10;
			cnt++;
		}
	}
	cout<<cnt<<endl;
	//cin>>h;
    return 0;
}

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

C++: while True:
    try:
        a, b = raw_input().strip().split(" ")
        print len(str(int(a) + int(b)))
    except:
        break;

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

#define rep(i,n) for(ll (i)=0;(i)<(ll)(n);(i)++)
#define all(x) (x).begin(),(x).end()
#define MOD 1000000007LL
#define INF (1LL<<60LL)
#define int long long
typedef long long ll;

using namespace std;



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

C++: #include <cstdio>
#include <string>

int main() {
    int ch;
    int a, b;
    char str[255];
    ch = 0;
    while (ch != EOF) {
          scanf("%d %d", &a, &b);
          sprintf(str, "%d", a + b);          
          printf("%d\n", strlen(str));   
          ch = getchar();
    }
}

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

C++: #include<iostream>

using namespace std;

int z,x,y;
int main(){
 cin>>x>>y;
 z=x+y;
if(z>=0){
if(z<10){
	cout<<1<<endl;}
else
 if(z<100){
 	cout<<2<<endl;}
 else
  if(z<1000){
  	cout<<3<<endl;}
  else
   if(z<10000){
   	cout<<4<<endl;}
   else
    if(z<100000){
     cout<<5<<endl;}
    else
     if(z<1000000){
      cout<<6<<endl;}
     else
      cout<<7<<endl;}
else
 cout<<"wrong input"<<endl;
return 0;
	
}

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

int main(){

  int a,b,count;

  while(cin >> a >> b){

    count=0;
    a+=b;

    while(a!=0){
      a=a/10;
      count++;
    }

    cout << count << endl;

  }
}

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

int main(){
    int i, j;
    int a,b,c;
    std::vector<int> avec, bvec;
    for (i = 0; i <= 200; i++){
        scanf("%d %d", &a, &b);
        c = a + b;

        std::string str = std::to_string(c);
        std::cout << str.length() << "\n";

        // for(j = 0; j < 8; j++){
        //     if (c == 0){
        //         printf("1\n");
        //         break;
        //     }
        //     if (c / std::pow(10,j) < 1){
        //         printf("%d\n",j);
        //         break;
        //     }
        // }
        // // avec.push_back(a);
        // // bvec.push_back(a);
    }

    return 0;
}

C++: #include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<vector>

using namespace std;

int main()
{
	int a[200], b[200], n, ans = 1;
	for (int i = 0; i < 200; i++)
	{
		cin >> a[i] >> b[i];
		n = a[i] + b[i];
		while (n > 1)
		{
			n /= 10;
			ans++;
		}
		cout << ans << endl;
	}
}

C++: #include<iostream>
using namespace std;
class DigitNumber{ 
    public:
        void solve(int a,int b){
            string sum=to_string(a+b);
            if(sum=="0")cout<<0<<endl;
            else cout<<sum.length()<<endl;
        }
};
int main(){
    DigitNumber inst;
    int a,b;
    while(true){ 
        cin>>a>>b;
        inst.solve(a,b);
    }
}

C++: #include<cstdio>
#include<cctype>
using namespace std;

int main(){
	long long int a,b;
	int ans;
	while(true){
		scanf("%lld %lld",&a,&b);
		if(a==0&&b==0)break;
		a+=b;
		ans=0;
		while(a>0){
			a=a/10;
			ans++;
		}
		printf("%d\n",ans);
	}
	return 0;
}