Go: package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		row := strings.Split(scanner.Text(), " ")
		var sum int
		for _, v := range row {
			num, _ := strconv.Atoi(v)
			sum += num
		}
		fmt.Println(len([]rune(strconv.Itoa(sum))))
	}
}

C++: #include<iostream>
int main(){
	int Digit, a, b, sum;

	while (std::cin >> a >> b){
		Digit = 0;
		sum = a + b;
		while (sum > 0){
			Digit++;
			sum /= 10;
		}
		std::cout<<Digit<<std::endl;
	}
return 0;
}

C++: #include<iostream>
#include<stdio.h>
using namespace std;
int main(){
	int a[200],b[200],c[200],i,count;
	i=0;
	while(cin>>a[i]>>b[i]){
		count=1;
		c[i]=a[i]+b[i];
		while(c[i]/10!=0){
			c[i]=c[i]/10;
			count++;
		}cout<<count<<endl;
	}
	return 0;
}

C++: // ------------------------------------
// Date:2018/ 2/11
// Problem:0002 : DigitNumber 2.cpp
//
// ------------------------------------

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

#define FOR(i,a,b) for(int i=(int)a;i<(int)b;++i)
#define REP(i,n) FOR(i,0,n)

int main()
{
  int a,b,cnt;
  while (scanf("%d %d", &a, &b) != EOF) {
    cnt = 0;
    a += b;
    while(a>0) {
      a/=10;
      ++cnt;
    }
    printf("%d\n", cnt);
  }
  return 0;
}

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

int digitCount(int number)
{
    int result = 1;
    while (number > 9) {
        number /= 10;
        result++;
    }
    return result;
}

int main(int argc, const char * argv[]) {

    std::string line;
    std::vector<int> sum;
    int n1 = 0;
    int n2 = 0;
    
    while (std::getline(std::cin, line))
    {
        sscanf((const char*) line.c_str(), "%d %d", &n1, &n2);
        sum.push_back(digitCount(n1 + n2));
        
    }
    std::cout << std::endl;
    
    std::vector<int>::iterator it = sum.begin();
    std::cout << *it << std::endl;
    
    while (++it < sum.end()) {
        
        std::cout << *it << std::endl;
    }
    
    return 0;
}

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

int main(void){
	
	int a, b, d, count, z;
		
	while(cin >> a){
	  cin >> b;
		z = a + b;
		d = 10;
	  count = 1;
		while(z / d){
  		count++;
  		d *= 10;
		}
		cout << count << endl;
	}
	
	return 0;
}

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

int main()
{
     int a,b,sum,digit;
    while(1)
    {
     cin>>a>>b;
    sum=a+b;
    digit=0;
    while(sum!=0)
    {
        sum/=10;
        digit++;
    }
    cout<<digit<<"\n";
    }

}

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

C++: #include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main(){
int a,b,c;
char ans[100];
	while(1){
	cin>>a>>b;
		sprintf(ans,"%d",a+b);
	c=strlen(ans);
	cout<<c<<endl;
	}
return 0;
}

C++: #include<stdio.h>

using namespace std;

int main(){
 int a, b, i;
 while(a!=-1 && b!=-1){
  scanf("%d%d", &a, &b);
  a += b;
  for(i=0;i<201;i++){
   if(a/10==0){
    printf("%d\n", i+1);
    break;
   }
   else{
    a = a/10;
   }
  }
 }

 return 0;
}

C++: //c++11
#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() {
    long int x, y;
    int ans;
    vector<long int> vx, vy;
    
    while(cin >> x >> y){
        vx.push_back(x);
        vy.push_back(y);
    }

    for(int i=0; i < vx.size(); i++ ){
        long int div = 1, sum = vx[i]+vy[i];
        for(int j = 0; ; j++){
            if(sum / div < 1){
                ans = j;
                break;
            }else{
                div *= 10;
            }
        }
        cout << ans << endl;
    }

}

C++: #include<bits/stdc++.h>
using namespace std;
int a,b,num;
int main(){
	while(cin>>a>>b){
		num=a+b;
		if(num>=0&&num<=9){
			cout<<"1"<<endl;
		}
		else if(num>=10&&num<=99){
			cout<<"2"<<endl;
		}
		else if(num>=100&&num<=999){
			cout<<"3"<<endl;
		}
		else if(num>=1000&&num<=9999){
			cout<<"4"<<endl;
		}
		else if(num>=10000&&num<=99999){
			cout<<"5"<<endl;
		}
		else if(num>=100000&&num<=999999){
			cout<<"6"<<endl;
		}
		else{
			cout<<"7"<<endl;
		}
	}
 }

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

C++: #include <cstdio>

int toLowUnder10(int arg) {
	return (10 > arg) ? 1 : (toLowUnder10(arg/10) + 1) ;
}

int main (int argc, char *argv[]) {
	int a,b;
	while (EOF != fscanf(stdin, "%d %d", &a, &b)) {
		printf("%d\n", toLowUnder10(a+b));
	}
	return 0;
}

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

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

int main()
{
	std::vector<int> x;
	int a, b;
	while (scanf("%d %d", &a, &b) != EOF)
		x.push_back(a+b);

	for (int i = 0; i < x.size(); ++i)
		std::cout << static_cast<int>(log10(x[i])) + 1 << std::endl;
	return 0;
}

C++: #include<stdio.h>

int main(void){

	int i=0;
	int a,b;
	int sum;

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

	sum = a+b;

	while(sum != 0){

		sum/=10;
		i++;
	}

	printf("%d\n",i);
	
	return 0;
}

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

using namespace std;

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


int main() {
  int a, b;
  while (cin >> a >> b) {
    cout << (to_string(a+b)).length() << "\n";
  }
  return 0;
}

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 ret;
    ss >> ret;   
    cout << ret.size() << endl;
  }
  
queue<int> que;
while(true){
que.push(1);
}
  
return 0;
}

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

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

#pragma warning(disable:4996)
#define MAX_DATA (20)
int main()
{
	char Work[MAX_DATA][256];

	int Num[2];
	int Divide;
	int nCnt2,nCnt = 0, Result, Keta = 1;

	for (nCnt2 = 0; nCnt2 < MAX_DATA; nCnt2++)
		gets(Work[nCnt2]);

	for (nCnt2 = 0; nCnt2 < MAX_DATA; nCnt2++)
	{
		for (nCnt = 0; Work[nCnt] != '\0'; nCnt++)
		{
			if (Work[nCnt2][nCnt] == ' ')
			{
				char Work2[256];
				char Work3[256];

				strcpy(Work2, &Work[nCnt2][nCnt]);

				Work[nCnt2][nCnt] = '\0';

				strcpy(Work3, Work[nCnt2]);

				Num[0] = atoi(Work3);
				Num[1] = atoi(Work2);
				break;
			}
		}

		Result = Num[0] + Num[1];

		Keta = 1;
		for (nCnt = 0; ;nCnt++)
		{
			Result = Result / 10.0f;

			if (Result > 0)
				Keta++;
			else
				break;
		}

		printf("%d\n", Keta);
	}
	
	return 0;
}