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<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<cmath>
#include<map>
#include<list>
#include<set>
using namespace std;
int main() {
  int a, b;
  while (cin >> a >> b) {
    if (a + b < 10){
      cout << 1 << endl;
    }
    else if (a + b < 100){
      cout << 2 << endl;
    }
    else if (a + b < 1000) {
      cout << 3 << endl;
    }
    else if (a + b < 10000) {
      cout << 4 << endl;
    }
    else if (a + b < 100000) {
      cout << 5 << endl;
    }
    else if (a + b < 1000000) {
      cout << 6 << endl;
    }
    else if (a + b < 10000000) {
      cout << 7 << endl;
    }
  }

  return 0;
}

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

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

int main(){
	int a,b,x;
	while(cin>>a>>b){
		cout<<unsignedGeddigit(a)+unsignedGeddigit(b)<<endl;
	}

	return 0;
}

C++: #include <iostream>

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

C++: #include <iostream>

using namespace std;

void solve()
{
	while(true)
	{
		int a, b;
		cin >> a >> b;
		int sum = a + b;
		int count = 0;
		while(sum)
		{
			sum /= 10;
			++count;
		}
		cout << count << endl;
	}
}

int main()
{
	solve();
	return(0);
}

C++: #include<iostream>
using namespace std;
int main()
{
	int a, b;
	while (scanf_s("%d%d",&a,&b)!= EOF)
	{
		int l=1;
		int k = a + b;
		while (k / 10)
		{
			l++;
			k /= 10;
		}
	cout << l << endl;
	}
	return 0;
}

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

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

C++: #include <iostream>
#include<vector>
#include<stdlib.h>
#include<algorithm>
#include<string>
using namespace std;



int main(void){

	int a, b, sum = 0, count;

	for (; cin;){//??°????????????????????°?????????
		count = 0;
		cin >> a >> b;
		sum = a + b;

		while (sum != 0){


			sum /= 10;
			++count;

		}

		cout << count << endl;
	}

return 0;

}

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

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

C++: #include <iostream>

int main(int argc, char const* argv[])
{
	int a, b, digit, sum;
	while(std::cin >> a >> b)
	{
		sum = a + b;
		while(sum > 0)
		{
			sum /= 10;
			digit++;
		}

		std::cout << digit << std::endl;
		digit = 0;
	}

	return 0;
}

C++: 5 7
1 99
1000 999

C++: #include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main(void)
{
	long long int a, b;
	int ans[200],cou = 0;
	while ((scanf_s("%lld %lld",&a,&b)) != EOF) {
		for (int i = 1, j = 1; i <= 7; i++, j *= 10) {
			if (a + b / j <= 0) {
				ans[cou] = i;
				cou++;
				break;
			}
		}
	}
}

C++: #include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <iomanip>
#include <map>
#include <queue>
#include <stack>
#include <set>
#include <ctime>
#include <iterator>
#include <sstream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;


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

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

int main() {
  int x, y, count;
  cin >> x >> y;

  char ch[] = {(char)(x + y)};

  for(int i = 0; ch[i] == '\0'; ++i) {
    ++count;
  }
  cout << count << endl;
}

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

int main(void){
  int c = 0, i = 0, a, b, d;
  char tmp[8]; // 0 - 1000000
  while(c != EOF){
    while((c = getchar()) != EOF && c != '\n'){
      tmp[i++] = c;
      if(c == ' '){
        tmp[i] = '\0';
        a = atoi(tmp);
        i = 0;
      }
    }
    tmp[i] = '\0';
    b = atoi(tmp);

    d = a + b;
    for(i = 0; d != 0; i++){
      d /= 10;
    }
    printf("%d\n", i);
  }
  return 0;
}

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

int digit(int num) {
    int cnt = 0;
    while(num != 0) {
        cnt++;
        num /= 10;
    }
    return(cnt);
}

int main(void) {
    int a, b;
    cin >> a >> b;
    
    cout << digit(a + b) << endl;
    
    return(0);
}

C++: #include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include<iomanip>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <cstdio>

using namespace std;

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

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

int main() {
	//0000
	/*
	int i, j;

	for (i = 1; i < 10; i++) {
		for (j = 1; j < 10; j++) {
			cout << i << "x" << j << "=" << i*j << endl;
		}
	}
	*/
	//0001
	/*
	int i;
	const size_t MNum = 10;
	int MHeight[MNum];
	int MH1 = 0, MH2 = 0, MH3 = 0;
	for (i = 0; i < 10; i++) {
		cin >> MHeight[i];
		if (MHeight[i] > MH1) {
			MH3 = MH2;
			MH2 = MH1;
			MH1 = MHeight[i];
		}
		else if (MHeight[i] > MH2) {
			MH3 = MH2;
			MH2 = MHeight[i];
		}
		else if (MHeight[i] > MH3) {
			MH3 = MHeight[i];
		}
	}
	cout << MH1 << endl << MH2 << endl << MH3 << endl;
	*/
	/*
	priority_queue<int, vector<int>, less<int> > que;
	int MH;

	for (int i = 0; i < 10; i++) {
		cin >> MH;
		que.push(MH);
	}

	for (int j = 0; j < 3; j++) {
		cout << que.top() << endl;
		que.pop();
	}
	*/
	//0002
	int a, b;
	while (cin >> a >> b) {
		int sum = a + b;
		int count = 0;
		while (sum > 0) {
			sum = sum / 10;
			count++;
		}
		cout << count << endl;
	}
	return 0;
}

C++: #include<iostream>

using namespace std;

int main()
{
	size_t ix = 0;
	int a[100],b[100];

	while(cin >> a[ix]){
		if(!(cin >> b[ix]))
			break;
		++ix;
	}

	for(size_t count = 0;count != ix;++count){
		int dight,temp = a[count]+b[count];
		for(a[count]+b[count]>1?1:0,dight = 0;;)
			if(temp/=10)
				++dight;
			else
				break;
		cout <<dight<<endl;
	}

	return 0;
}

C++: #include <iostream>

using namespace std;

int main(int argc, char const* argv[])
{
	int hoge,a,b;

	cin >> a >> b;

	hoge = a + b;

	int i;
	for( i = 0;(hoge /= 10) != 0 ; i++ );

	cout << ++i;

}

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);
    }
}