Go: // 九九を出すだけ
package main
import (
	"fmt"
	"os"
	"bufio"
	"strconv"
)

var sc = bufio.NewScanner(os.Stdin)
var out = bufio.NewWriter(os.Stdout)

func main(){
	sc.Split(bufio.ScanWords)
	defer out.Flush()
	for sc.Scan(){
	    s := nextIntIs()
	    sc.Scan()
	    t := nextIntIs()
        a := len(strconv.Itoa(s+t))
	    fmt.Fprintln(out, a)
	}
}

func next() string{
	sc.Scan()
	return sc.Text()
}

func nextInt() int{
	a, _ := strconv.Atoi(next())
	return a
}

func nextIntIs() int{
	a, _ := strconv.Atoi(sc.Text())
	return a
}

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

using namespace std;

int a,b;
int s;
int Count;
int main(){
  Count = 0;
  while((scanf("%d %d",&a,&b)) != EOF){
  s = a+b;
  for(; s != 0; s/=10){
    Count++;
  }
  printf("%d",Count);
  }
  return 0;
}

C++: using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.IO;
class ListOfTopThreeHills
{
	static void Main(string[] args)
	{
		do
		{
			string input = Console.ReadLine();
			if (string.IsNullOrEmpty(input))
			{
				break;
			}
                 string[] inputArr = input.Split(' ');
                 int a = int.Parse(inputArr[0]);
                 int b = int.Parse(inputArr[1]);
                 int sum = a + b;
                 Console.WriteLine(sum.ToString().Length);
		} while (true);
	}
}

C++: #include<iostream>
#include<string>
#include<sstream>

using namespace std;

typedef long long int lint;

int main(int argc,char** args){

    lint n1;
    lint n2;

    cin>>n1;

    while(!cin.eof()){
        cin>>n2;

        lint sum=n1+n2;

        ostringstream temp;
        temp<<sum;

        string instr=temp.str();
        cout<<instr.length()<<endl;

        cin>>n1;
    }
    

    /* Lets try straight forward way first.
    string s1;
    string s2;

    cin>>s1;
    while(!cin.eof()){
        cin>>s2;
        
        int d1=s1[0];
        int d2=s2[0];

        //lets make sure s1 length is hight or equal
        if(s1.length() < s2.length*(){
            string swit=s2;
            s2=s1;
            s1=s2;
        }

        if(s1
        //if it the last digit, the for sure.
        if(d1+d2>9){

        }



        cin>>s1;
    }

    */

}

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

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

int main()
{
  int a, b;
  while (scanf("%d %d", &a, &b) != EOF) {
    int ans = a + b;
    string s = to_string(ans);
    cout << s.size() << endl;
  }
}

C++: #include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <typeinfo>

using namespace std;

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

C++: #include <stdio.h>

int main(){

	int a=0,b=0;

	while (scanf("%d%d", &a, &b) !=EOF){
		
		if (a + b < 10){
			printf("1\n");
		}else if(a + b < 100){
			printf("2\n");
		}else if (a + b < 1000){
			printf("3\n");
		}else if (a + b < 10000){
			printf("4\n");
		}else if (a + b < 100000){
			printf("5\n");
		}else if (a + b < 1000000){
			printf("6\n");
		}else{
			printf("7\n");
		}
	}
	return 0;
}

C++: #include <iostream>
#include <stdio.h>
using namespace std;
 
int main(){
int a,b;
	cin>> a>> b;
	if(a+b<10){
		cout<< "1"<<endl;
	}
	else if(10<=a+b && a+b<100){
		cout<< "2"<<endl;
	}
	else if(100<=a+b && a+b<1000){
		cout<< "3"<<endl;
	}
	else if(1000<=a+b && a+b<10000){
		cout<< "4"<<endl;
	}
	else if(10000<=a+b && a+b<100000){
		cout<< "5"<<endl;
	}
	else if(100000<=a+b && a+b<1000000){
		cout<< "6"<<endl;
	}
	else if(1000000<=a+b){
		cout<< "7"<<endl;
	}
	return 0;
}

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

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

C++: //
//  main.cpp
//  b
//
//  Created by h3037178 on 2017/07/31.
//  Copyright ?? 2017??´ ?????£?????????. All rights reserved.
//

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
    int i,o,b=0,f;
    for(int p=0;p<200;p++){
        cin>>i>>o;
        b=0;
        f=i+o;
        if(f<=0){
            break;
        }
        for(int j=1;j<=1000000;j=j*10){
            if(i+o>=j){
                b++;
            }else{
                break;
            }
        }
        cout<<b<<endl;
        }
}

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

template<class T>
T input()
{
	T val;
	std::cin >> val;
	return val;
}

int main()
{
	while (true)
	{
		int hoge = input<int>() + input<int>();
		std::cout << static_cast<int>(log10(hoge)) + 1 << std::endl;
	}

	return 0;
}

C++: 
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <vector>
#include <string>
#include <queue>
#include <algorithm>
#include <math.h>
#include <utility>
#include <set>
#include <map>
#define INF 100000
using namespace std;

int dig(int n){
    int ans =0;
    while (n>0) {
        n/=10;
        ans++;
    }
    return ans;
}

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

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

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

	while(1){
		cin >> a >> b;
		if(cin.eof()){
			break;
		}

		sum = a + b;

		for(int i=1; ; ++i){
			if(sum<10){
				cout << i << endl;
				break;
			}else{
				sum /= 10;
			}
		}
	}

	return 0;
}

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

using namespace std;

static int count_digit(const int a, const int b) {
	return to_string(a + b).length();
}

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

C++: #include <stdio.h>

int main()
{
	int a,b;

	while(1)
	{
		int kai;
		int i = 1;
		int j = scanf("%d %d" , &a,&b);
		if(j==EOF) break;

		kai = a+b;

		while(kai > 9)
		{
			kai /= 10;
			i++;
		}

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

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

int main() {
	int a,b,c;
	while(cin>>a>>b){
		c=a+b;
			if(c<10){
				cout<<"1\n";
			}
			else if(c>9&&c<100){
				cout<<"2\n";
			}
			else if(c>99&&c<1000){
				cout<<"3\n";
			}
			else if(c>999&&c<10000){
				cout<<"4\n";
			}
			else if(c>9999&&c<100000){
				cout<<"5\n";
			}
			else if(c>99999&&c<1000000){
				cout<<"6\n";
			}
			else{
				cout<<"7\n";
			}
	}
}

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

#define add push_back
#define inf 2147000000

#define rep(i,n) for(int i=0;i<n;i++)

using namespace std;

int main(void){
	int a,b;
	while(scanf("%d",&a)!=EOF){
	scanf("%d",&b);
	
	a+=b;
	int i=0;
	int flg=0;
	if(a==0)flg=-1;
	for(i=0;a>=10;i++){
		a/=10;
	}
	i+=flg;
	cout<<i+1<<endl;
	}
}

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

using namespace std;

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

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

C++: #include "bits/stdc++.h"
using namespace std;
int main(){
    int a, b;
    int sum;
    string ans;
    while(cin >> a >> b){
        sum = a + b;
        ans = to_string(sum);
        cout << ans.size() << endl;
    }     
    return 0;
}

C++: #include <iostream>

using namespace std;
int main(){
	int a, b, i = 1, s;
	
	cin >> a >> b;
	s = a + b;
	
	while(s > 10){
		s = s / 10;
		i++;
	}
	
	cout << i;
	return 0;
}

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

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