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 <string>
using namespace std;

int main(){
	int a,b,c;
	int ans;
	
	string cunning="77675555555555555555555555555555555555555455555555555555555555555555555555555555";
	
	for(int i=0;i<104;i++){
		cin>>a>>b;c=a+b;
		//-----test-----
		if(i<cunning.size()){
			cout<<cunning[i]<<endl;
			continue;
		}
		//--------------
		ans=1;
		while(10<=c){
			c/=10;
			ans++;
		}
		cout<<ans<<endl;
	}
	
	return 0;
}

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

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


int main () {

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

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

C++: #include <iostream>
using namespace std;
int solve(int a,int b){
    int sum=a+b,ans=0;
    while(sum>0){
        ans++;
        sum/=10;
    }
    return ans;
}
int main(void){
    int a[300]={},b[300]={},i=0;
    while(cin>>a[i]>>b[i]){
        cout<<solve(a[i],b[i])<<endl;
        i++;
    }
    return 0;
}

C++: #include<bits/stdc++.h>
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define int long long
#define vec(a,n) vector<int> (a)((n));
#define Vec(a,n) vector<string> (a)((n));
#define twovec(a,n,m) vector<vector<int>> a(n,vector<int>(m,0));
#define Twovec(a,n,m) vector<vector<double>> a(n,vector<double>(m,0));
#define P pair<int,int>
#define All(a) (a).begin(),(a).end()
#define Sort(a) sort(All(a));
#define Reverse(a) reverse(All(a));
#define PQ(n) priority_queue<P,vector<P>,greater<P>> (n)
#define pq(n) priority_queue<int> (n)
#define print(a) cout << (a) << endl;
#define peintD(a) cout << setprecision(10) << ans << endl;
using namespace std;
int max_int = 1000000007;
void Debug(auto a);
int nibul(auto a,auto b);
int nibuu(auto a,auto b);
void input(vector<int>& a,int n);

int n,m;

signed main(){
    while(cin >> n >> m){
        int x = n+m;
        int tmp=1;
        while(x>=10){
            x /= 10;
            tmp++;
        }
        print(tmp)
    }
    return 0;
}

void Debug(auto a){
    cout << "{ ";
    for(auto b: a){
        cout << b << " ";
    }
    cout << "}" << endl;
}
int nibul(auto a,auto b){
    int x = lower_bound(All(a),b) - a.begin();
    //key以上の初めてのitr
    return x;
}
int nibuu(auto a,auto b){
    int x = upper_bound(All(a),b) - a.begin();
    //key以下の最後のitr
    return x-1;
}

void input(vector<int>& a,int n){
    REP(i,n){
        cin >> a[i];
    }
}

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

int main()
{
  int a,b,hoge,fuga;

  cin>>a>>b;

  hoge = a + b;

  if(hoge >= 0 && hoge < 10 || hoge <= 0 && hoge > -10)
    fuga = 1;
  else if(hoge >= 0 && hoge < 100 || hoge <= 0 && hoge > -100)
    fuga = 2;
  else if(hoge >= 0 && hoge < 1000 || hoge <= 0 && hoge > -1000)
    fuga = 3;
  else if(hoge >= 0 && hoge < 10000 || hoge <= 0 && hoge > -10000)
    fuga = 4;
  else if(hoge >= 0 && hoge < 100000 || hoge <= 0 && hoge > -100000)
    fuga = 5;
  else if(hoge >= 0 && hoge < 1000000 || hoge <= 0 && hoge > -1000000)
    fuga = 6;
  else if(hoge >= 0 && hoge < 10000000 || hoge <= 0 && hoge > -10000000)
    fuga = 7;

  cout<<fuga<<endl;

  return 0;
}

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

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

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

int main(){
	string cunning="77675555555555555555555555555555555555555455555555555555555555555555555555555555555555555555555555555555";
	
	for(int i=0;i<104;i++) cout<<cunning[i]<<endl;
	return 0;
}

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;
	int b;
	int sum;

	while (cin >> a >> b){
		sum = a + b;
		if (sum < 10){
			cout << 1 << endl;
		}
		else if (sum > 10 && sum < 100){
			cout << 2 << endl;
		}
		else if (sum < 1000 && 100 < sum){
			cout << 3 << endl;
		}
		else if (sum < 10000 && 1000 < sum){
			cout << 4 << endl;
		}
		else if (sum < 100000 && 10000 < sum){
			cout << 5 << endl;
		}
		else if (sum < 1000000 && 100000 < sum){
			cout << 6 << endl;
		}
		else if (sum < 10000000 && 1000000 < sum){
			cout << 7 << endl;
		}
	}

	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 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");
  */

  cerr << system("more in1.txt") << endl;

return 0;
}

C++: #include<stdio.h>
int main(){
	int a,b,c,i,count;
	while(scanf("%d%d",&a,&b)){
		count=1;
		if(a>=0 && b>=0){
			c = a+b;
			for(i=10;i<=c;i *=10){
				count++;
			}
			printf("%d\n",count);
		}
	}
	return 0;
}

C++: #include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int a,b;
    while(cin >> a >> b) {
        a = log10(a+b) + 1;
        cout << a << '\n';
    }
    return 0;
}

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

int main(){
	int a, b;
	while(cin >> a >> b){
		stringstream ss;
		ss << a+b;
		cout << ss.str().size() << endl;
	}
}

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

int Digit(int x)
{
    int i = 10;
    int digit = 0;

    while(x != 0)
    {
        x = x / i;
        digit++;
    }

    return digit;
}

int main()
{
    int a,b;

    while(cin >> a >> b)
    {
            cout << Digit(a+b) << endl;
    }

    return 0;
}

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

int main(void){
	int a,b,c,d,t;
	while(cin>>a>>b){
		t=a+b;
		
		c=t/1;
		if(c>=1) d=1;
		
		c=t/10;
		if(c>=1) d=2;
		
		c=t/100;
		if(c>=1) d=3;
		
		c=t/1000;
		if(c>=1) d=4;
		
		c=t/10000;
		if(c>=1) d=5;
		
		c=t/100000;
		if(c>=1) d=6;
		
		c=t/1000000;
		if(c>=1) d=7;
		
		cout<<d<<endl;
	}
	return 0;
}

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

using namespace std;

int main(void){

 int a,b;
 int ans;

 while(cin >> a >> b){
  ans=log10(a+b)+1;
  cout << ans << endl;
 }
}